Django REST Framework 权限管理 1. DRF的权限管理 Django REST Framework的权限管理包括两个部分。 一个是认证Authentication方式。指定对用户进行鉴权的方式,获取request.user。 一个是权限控制Permissions。针对Django资源、用户类别进行权限控制。 1.1 认证方式 相关源码在rest_framework/authentication.py文件中。一共有三种认证方式: 云运维 2023-01-04 穿过生命散发芬芳
Django 类视图 Django中有两种视图,一种是函数式视图,另一种是类视图。视图的作用主要是,用于填充逻辑,返回响应体。函数式视图难以扩展,代码复用率低。而类视图可以利用继承、Mixins,快速复用、扩展功能。本文主要讨论了,Django对类视图的处理逻辑,类视图装饰器实现。 1. Django的视图 Django的URL解析器,将一个HttpRequest对象和相应的参数传递给一个可调用的函数,并期待其返回一个 云运维 2023-01-04 张二河
Django 信号 1. 基本概念 Django内置了一个信号分发器。信号可以帮助解耦程序模块。在应用中其他地方发生某事件时,通知指定函数。信号允许某些 senders 通知一组 receivers 已经发生的行为。 2. 信号使用 2.1 声明信号 在使用信号之前,首先得创建信号实例,声明信号的接收参数列表。django.dispatch.Signal是Django提供的信号类,其构造方法接收一个参数providi 云运维 2023-01-04 LOVEHL^ˇ^
Django ORM 之 SQL 1. 基本概念 ORM:对象关系映射,Object Relational Mapping。它的作用是在关系型数据库和对象之间作一个映射。不需要复杂的 SQL 语句,操作数据如同操作对象一样简单。 QuerySet:给定模型的对象列表。QuerySet 允许从数据库中读取数据,对其进行筛选、排序等操作。 Manager:django.db.models.manager.Manager,Django 云运维 2023-01-04 剑圣无痕
Django Forms 功能 1. 自动生成HTML表单元素 Widget,用来渲染成HTML元素的工具。 指定小部件 1 2 3 4 5 6 from django import forms class CommentForm(forms.Form): name = forms.CharField() url = forms.URLField() comment = forms.CharField(widget=forms. 云运维 2023-01-04 向阳逐梦
Django 初始化数据之 fixture 1. Fixtures 特点 Fixtures 是一种新的提供初始化数据的方法,并且被 Django 的测试框架用来处理单元测试的测试数据。不同于 SQL 文件的是,使用 fixture 可以提供一个被 Django 的 serialization 系统所能识别的序列化文件,它会被读取并自动转换成对应的 model ,然后保存进数据库。 2. 数据导出 将 app_name 的数据导出为 init 云运维 2023-01-04 LOVEHL^ˇ^
从零开始使用 Docker 打包 Django 开发环境 (1) 环境搭建 Vagrant 适合用来管理虚拟机,而 Docker 适合用来管理应用环境。为了更好地模拟真实运行环境,本系列文章借助 Docker 和 Docker Compose 搭建 Nginx + uWSGI+ Django + MySQL + Redis + Rabbit 的开发环境。 1. 基本概念 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Doc 云运维 2023-01-04 向阳逐梦
从零开始使用 Docker 打包 Django 开发环境 (4) 项目组织 1. 部署架构 浏览器访问一个页面的程序处理流程:(1),浏览器向 Nginx 发起一个请求,如果匹配到 Nginx 的静态 URL,比如 /static 目录下的 js、css、404.html 等文件,那么 Nginx 直接返回文件。其他请求 URL,通过 uwsgi_pass 配置转给 uWSGI 处理。(2),uWSGI 解析请求头、请求体,http 协议转为 wsgi协议内容,最后将请求 云运维 2023-01-04 剑圣无痕
从零开始使用 Docker 打包 Django 开发环境 (5) Nginx 1. 目录结构 1 2 3 4 5 6 7 8 9 10 11 12 ├── django-devops-nginx │ ├── Dockerfile │ └── nginx.repo ├── django-devops-compose │ ├── docker-compose.yml │ ├── www │ ├── conf │ │ ├── nginx.conf │ ├── log │ │ ├─ 云运维 2023-01-04 向阳逐梦
从零开始使用 Docker 打包 Django 开发环境 (6) uWSGI、Django 1. 目录结构 django-devops-uwsgi 目录是打包 uWSGI 和 Django 的镜像编译文件。在镜像中安装 uWSGI、pip、virtualenv等必要的程序包。在使用镜像创建容器时,执行 start.sh 脚本, 创建 Python 虚拟运行环境,从 Django 的 requirements.txt 安装依赖包,最后启动 uWSGI 监听端口,等待请求。 django-d 云运维 2023-01-04 大树
Django 大文件传输 1. 直接返回文件 如果静态文件在工程根目录的 media/test.zip,需要先将文件读入内存,再进行传输。代码如下:settings.py 配置 1 2 PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media/') yourapp/view 云运维 2023-01-04 剑圣无痕
Django 静态文件处理 1. Django 静态文件分类 Django 静态文件分为两类:static 和 media。 static: 是页面引用的 JS、CSS、Image 等文件 media:是用户上传的文件 2. 生产环境配置 生产环境,通常配置 Nginx 转发静态文件请求,而 Django 处理动态请求。nginx 配置 1 2 3 4 5 6 7 location /media { alias /path/ 云运维 2023-01-04 大树
Django 调试工具 djangodebugtoolbar 1. 关于 Django 的性能 Django 是一个 Python 写的 Web 应用框架。使用 Django ,可以非常简单、高效地开发复杂的数据驱动的网站。同时,Django 非常注重组件的重用性、可插拔、敏捷开发、DRY(Don’t Repeat Yourself)。从一定程度上讲,Django 是一个很适合做业务逻辑实现的应用框架。笔者曾经利用 Docker 做过一次 Django 的性 云运维 2023-01-04 宇宙之一粟
错误码设计以及 Django 的异常统一处理 笔者目前使用 Django 从事 SaaS 开发,同时开发和维护多个 SaaS 应用。在很多 SaaS 应用中都约定了错误码,有的用于处理登录态,有的用于标记业务逻辑状态。对于这种项目共性很强的特征,花时间学习和研究是非常有必要的。本篇主要讨论了错误码的用途、如何设计错误码、使用 Django 中间件如何实现异常的处理错误码的返回。 1. 错误码的用途 错误码是与错误信息关联的一组数字或字母,用于 云运维 2023-01-04 向阳逐梦
无状态服务 1.问题描述 背景:一个 Django 开发的 SaaS 应用,对外提供文档服务功能。其中,搜索功能通过 Django Haystack 实现。问题:搜索功能有时可用,有时不可用。多次测试,发现可用和不可用会交替出现,出现概率各占约 50%。补充一下搜索功能实现的细节:Django Haystack 在提供搜索功能之前,需要执行如下命令: 1 python manage.py update_ind 云运维 2023-01-04 Escape
Django Model 与 ER 图 在需求逐步确认的过程中,系统的 DB 模型也逐步确认。有时使用,MySQL Workbench 这类工具绘制 E-R 图,然后生成 MySQL 数据库表,这时就需要反向生成 Django Models;有时直接写 Django Models ,但是又需要查看 E-R 图。本文主要解决上面两个需求,实现 Django Models 与 E-R 图之间的转换。 1. 生成 model 的关系图 Dja 云运维 2023-01-04 大白菜程序猿
Django 开发中常用命令 创建 Django 工程 1 django-admin startproject your_project_name 创建应用 1 2 3 django-admin.py startapp your_app_name # 或者 python manage.py startapp your_app_name python manage.py 和 django-admin 的功能基本一样。不同的是 p 云运维 2023-01-04 三掌柜
如何在 Django 中任意安全获取 request 在 Django 中,request 包含了一次请求的全部信息。后端处理逻辑经常需要用到 request 中的信息。比如, DRF 框架中想要随时能够获取到 request,或者将一些参数全局传递。Django 第三方 App 中有一些工具可以满足要求,但它们并不是安全可靠的。意思是,如果 Django 启动时,使用了多线程或协程,在获取 request 时,可能会发生错误。这显然是不能接受的。下 云运维 2023-01-04 宇宙之一粟
如何使用 Django Signal 解耦模块 最近,我负责开发一个重后端的应用。这个应用数据流向复杂,处理逻辑冗余堆积。项目技术栈选择的是 Django + Vuejs。前端使用 Webpack 打包,模块化管理,主要是展示数据。后端涉及的模块多,处理规则多,数据表多,每次涉及之前功能修改时,都消耗大量时间 review 代码。这让我意识到,在复杂应用中,解耦模块非常重要。下面是一些思考和实践。 1. 观察者模式 在实践中,我主要使用的是 D 云运维 2023-01-04 共饮一杯
开发 Tips(4) 主要记录最近遇到的一些开发问题,解决方法。 1. WhiteNoise 转发静态文件 Django 内置的静态文件服务器效率很低,而 WhiteNoise 是一个不错的替代品。具有如下特点: 通常用于 PaaS 服务 支持 wsgi 应用程序,针对 Django 进行了特殊适配 配合 CDN 使用,更佳 在 Gunicorn 配合下,使用 sendfile 系统调用,处理效率非常高 相比于 Ngi 云运维 2023-01-04 泡泡