Django

分类下相关文章

Django 无法获取微信小程序发送的 POST 数据

我用 Django 3.2 LTS 获取微信小程序 login 提交的 code,代码如下: code = request.POST["code"] 但是报错: KeyError: 'code' 但是用 request.body 可以看到序列化的 json 字符串,里面包含了 code 数据。 用 json.loads 解析出来也可以,但这样不够优雅。 解决方法 将微信小程序中的 wx.request header: header: { 'content-type': 'application/json' }, 替换为 header: { 'conte ...

阅读全文...

微信小程序向 Django 服务端 post 数据报 403 错误

在测试用 Django 实现微信小程序用户的登录逻辑,但是通过小程序端 wx.request 向 Django POST 数据时,报 403 错误。 403 问题原因 Django 的 CSRF 保护机制。 解决方法 将 login 接口单独排除在 CSRF 保护机制之外: from django.http import JsonResponse from django.views.decorators.csrf import csrf_exempt @csrf_exempt def login(request): rsp = { "code": ...

阅读全文...

Django 基于 Mysql 数据表结构自动生成 Python Model

还是习惯先手动创建 MySQL 表,然后生成对应语言的 Model 代码。 查了一下 Django 最近几年已经支持了该功能。(Django 3.1 下测试) 生成所有表的 Model 代码 $ python manage.py inspectdb 生成指定表的 Model 代码 例如 table1 这张表: $ python manage.py inspectdb table1 如果要生成指定的多张表 $ python manage.py inspectdb table1 table2 参考 https://stackoverflow.com/questions/1179469/is ...

阅读全文...

pipenv 安装 Django 3.1 开发环境

准备 pipenv 安装参考 安装 Django pipenv install Django 由于 Django 3.2 LTS 还未发布,所以默认安装的是 3.1 Downloading Django-3.1.7-py3-none-any.whl (7.8 MB) 如果没有使用国内源,下载、安装过程缓慢,需耐心等待。 tips: pipenv 更换国内源的方法: https://blog.csdn.net/jpch89/article/details/81952416 指定安装 Django 3.2 版本 pipenv install Django~=3.2 参考: https://pi ...

阅读全文...

Django LTS 版本的选择 (2021 年)

最近又要做 Django 版本的选择了,于是整理了一下。 Django 版本列表 参考官方网站的下载页 https://www.djangoproject.com/download/ Django LTS 版本的维护时间 LTS 版的维护时间在 3 年 非 LTS 版也就 1 年出头 2.2 LTS 还是 3.2 LTS 2019 年后到 2021 年初只有四个版本 2.1 2.2 LTS 3.0 3.1 目前看等 3.2 LTS 是值得的,2021 年 4 月发布。 可以先用 3.1 进行开发,然后迁移到 3.2 LTS。 Django 3.2 LTS 版本需要注意的改动 参考 ht ...

阅读全文...

Django Migration (New in Django 1.7)

Django 1.7 引入了 migration 的概念,用于方便的处理 model 中增加字段、删除字段 等造成的数据库改表问题。 为何要整理这篇笔记 使用了 Django 1.7 之后,发现将一个字段由 SlugField 修改成 CharField 之后, SlugField 对应的 index 并没有被删除掉。所以,需要确认一下,在什么情况下可以使 用 migration,什么情况下不可以使用。 migration 设计到的命令 python manage.py makemigrations 用于生成 migration 文件 python manage.py migrate ...

阅读全文...

Django 的权限管理 (login, logout)

Django 的在线文档太卡了 在 Mac 上使用 Dash 将 Django 文档都缓存到本地就方便多了,可以节省大量的等待时间。 user 表的结构 CREATE TABLE "auth_user" ( "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "password" varchar(128) NOT NULL, "last_login" datetime NOT NULL, "is_superuser" bool NOT ...

阅读全文...

django ORM

ORM 一直不喜欢用 ORM 做复杂关系,原因是不了解 ORM 对应的数据库表结构。 以及新建 Model 对象时,一些复杂属性如何初始化。 ForeignKey 在 SQLite 中,Foreign Key 对应的只是一个数字, 例如 owner = models.ForeignKey(User, null=True) .schema 之后会发现 "owner_id" integer, ManyToMany 例如,model 里增加一个 ManyToManyField tags = models.ManyToManyField(Tag) 实际上是新增了一 ...

阅读全文...

如何在生产环境中部署 Django 项目

在 ~/.bashrc 中设置环境变量 以标明这是生产环境,而非本地开发环境。 export DEBUG=False 使用 gunicorn & Nginx 使用 gunicorn 启动 django cd <YOUR-PROJECT-PATH> gunicorn <PROJECT-NAME>.wsgi -D -b 127.0.0.1:<PORT> Nginx 对应的配置 server { listen 80; server_name <YOUR-DOMAIN>; location / { prox ...

阅读全文...

django

基于 Django 1.8 安装依赖 $ sudo pip install django 初始化项目 $ django-admin.py startproject myproject tips: 如果忘记 django-admin 的参数,可以直接输入 $ django-admin.py | less 看一下生成的代码结构 $ tree . ├── myproject │   ├── __init__.py │   ├── settings.py │   ├── urls.py │   └── wsgi.py ├── manage.py └── README.md 启动 Deb ...

阅读全文...