Zhonghui

每个不曾起舞的日子,都是对生命的辜负

User Tools

Site Tools


程序:django:django

Django

  1. 大江狗 https://pythondjango.cn/(仅供参考,感觉作者不太严谨,有些细节被坑了几次…)
  1. Django是一个 Web 后端框架,用 Python 编写,用于构建网站和 Web 应用程序的 服务端(后端)逻辑
  2. Django初次发布于 2005 年 7 月,并于 2008 年 9 月发布了第一个正式版本 1.0(可能有点过时了?)
  3. Django是服务器渲染(浏览器请求 –> Django 后端(渲染 HTML 模板) –> 返回完整 HTML 页面)
  4. Django也支持前后端分离(用DRF:Django Rest Framework),这种时候Django不再做页面渲染,只做数据接口提供者,相当于一个纯后端

祖传代码:

关联条目:HTTP(S)协议CookieWeb开发共通基础Python


介绍[AI]

特点 说明
全功能框架 自带 ORM、权限管理、Admin 后台、表单、缓存、路由等,开箱即用
MTV 架构 类似 MVC,分为 Model(数据层)、Template(模板层)、View(逻辑层)
Admin 后台 自动生成后台管理界面,极大提升开发效率
强大的 ORM 数据库操作无需手写 SQL,跨数据库兼容性好
成熟稳定 十多年发展,文档完善,社区活跃,安全稳定
安全机制 防止 XSS、CSRF、SQL 注入等攻击的机制默认开启
丰富的中间件 支持认证、缓存、跨域、压缩、限流等功能快速集成
良好的国际化 支持多语言、时区、国际化日期格式等

安装和基础使用

python -m pip install Django==5.2.4

# 准备好虚拟环境并激活

# 创建工程并进入
django-admin startproject gzh_site
cd gzh_site

# 创建APP
python manage.py startapp demo

# 生成迁移文件(记录模型变化)
python manage.py makemigrations

# 执行迁移文件,实际修改数据库
# 把 Django 项目里定义的 models.py(数据模型)同步到数据库
# 生成或更新相应的数据表结构
# 我们不需要自己操作SQL
python manage.py migrate

# 启动项目
python manage.py runserver

APP

  1. App 是一个功能单元,不是整个项目,是可独立开发、可复用的 Django 子模块
  2. 一个 APP 是可以作为一个 pip 包被分发、使用的
  3. 一个 Django 项目可以包含多个 App
  4. Django 的 App 概念本身是不可嵌套的。每个 App 都是 Django 项目下的一个独立、平级的功能模块。App 不能包含另一个 App
  5. App 需要手动注册到项目(settings.py > INSTALLED_APPS)
  6. URL 通常是按 App 来组织的,在urls.py中配置匹配规则
  7. Django 的「App」只是代码组织的模块,并不是独立服务,不需要「通信」

Model 数据

# models.py
# 在 Django 的 models.Model 子类里,这种 把字段定义为类变量 的写法,是 Django ORM 框架的约定。
class User(models.Model):
    username = models.CharField(max_length=50)
    email = models.EmailField()
    created_at = models.DateTimeField(auto_now_add=True)

常用字段类型

ORM

数据库中的ORM

AI:它是 Django 框架提供的数据库抽象层,让你用 Python 的类和对象 来操作数据库,而不需要直接写 SQL。

默认情况下,Django 会根据模型所在的 App 和类名,自动生成数据库表名,格式为:<app_label>_<model_name>。在每个模型的 Meta 类中添加 db_table 即可自定义 table 的名称。

URL

# urls.py
urlpatterns = [
    path('users/', include('user.urls')),
    path('orders/', include('order.urls')),
    path('products/', include('product.urls')),
]

View 视图

数据库

  1. 基本不需要自己手动操作数据库
  2. 默认使用的数据库是SQLite

连接到数据库(MySQL)

Django 不会帮你新建数据库本身(CREATE DATABASE),你需要手动用工具建好,但 Django 会在这个数据库里自动建好所有表

# settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mydb',
        'USER': 'myuser',
        'PASSWORD': os.environ.get('DB_PASSWORD'),  # 从环境变量读取
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

认证

专题总结

Django Rest Framework

DRF(Django REST framework) 并不是 Django 官方团队开发的,它是一个第三方开源框架

  1. 3小时搞定DRF框架 | Django REST framework前后端分离框架实践 http://bilibili.com/video/BV1Dm4y1c7QQ
python -m pip install djangorestframework

(py311) anny@annys-MacBook-Air ~ % python -m pip show djangorestframework
Name: djangorestframework
Version: 3.16.0
Summary: Web APIs for Django, made easy.
Home-page: https://www.django-rest-framework.org/
Author: Tom Christie
Author-email: tom@tomchristie.com
License: BSD
Location: /Users/anny/pyenv/py311/lib/python3.11/site-packages
Requires: django
Required-by: 

DRF结构

DRF的进阶条目

  1. 元信息 嵌套类Meta
  2. 权限 Permission
  3. 用户 User
  4. CORS 跨源资源共享
  5. 异常处理 Exception
  6. 数据校验 Validation
  7. QuerySet 查询
  8. View 视图

DRF Misc

  1. Django 允许在 app/management/commands/ 目录下写 Python 脚本,定义类似 python manage.py <command_name> 的新命令。
/var/www/DokuWikiStick/dokuwiki/data/pages/程序/django/django.txt · Last modified: 2025/09/16 16:17 by zhonghui