Python · 3 分钟阅读
Django 主要功能模块
一张图速览 Django 提供的核心能力。
总览
| 模块 | 作用 | 关键字 |
|---|---|---|
| ORM | 对象 ↔ 数据库表映射 | Model、QuerySet |
| 认证授权 | 用户、组、权限、登录态 | auth、Permission |
| Admin | 自动生成后台管理界面 | ModelAdmin |
| 视图 | 处理请求并返回响应 | FBV / CBV |
| 模板 | HTML 渲染 | DTL、Jinja2 |
| 表单 | 数据校验与 HTML 生成 | Form、ModelForm |
| 信号 | 框架级发布-订阅 | pre_save、post_save |
| 路由 | URL → 视图映射 | path、re_path |
| 中间件 | 请求/响应钩子 | process_request |
| 缓存 | 提升响应速度 | cache_page |
下面逐一展开。
ORM
把 Python 类映射成数据库表,对表的操作转化为对象操作。
from django.db import models
class User(models.Model):
name = models.CharField(max_length=150)
password = models.CharField(max_length=128)
User.objects.all() # 全部
User.objects.filter(name__contains='a') # 模糊
User.objects.create(name='b', password='c') # 新增
认证授权
- 内置 User、AnonymousUser、Group 三个 Model
- 默认给每个 Model 提供 add / change / delete 三个权限
- 提供装饰器与 Mixin 实现视图级鉴权
Admin
零配置后台:注册 Model 即可获得增删改查界面,支持过滤、搜索、排序、字段分组等定制。
视图
from django.http import HttpResponse
def hello(request):
return HttpResponse("<h1>Hello Django</h1>")
视图就是一个可调用对象,接收 HttpRequest、返回 HttpResponse。
模板
将 HTML 从 Python 中抽离:
<html><body>{{ value }}</body></html>
return render(request, "hello.html", {"value": "Hello Django"})
表单
from django import forms
class LoginForm(forms.Form):
name = forms.CharField()
password = forms.CharField()
提供四项能力:自动生成 HTML、校验数据、回显错误、转换为 Python 类型。
信号
发布-订阅模式,用于在框架特定时机触发自定义逻辑。
from django.core.signals import request_started
from django.dispatch import receiver
@receiver(request_started)
def on_request(sender, **kwargs):
print("Request Coming")
路由
from django.urls import path
urlpatterns = [
path("bbs/", views.bbs), # 固定
path("bbs/<int:pk>/", views.detail), # 动态
path("topic/", include("topic.urls")), # 分发
]
中间件
对所有请求统一"加工"的钩子链,按 settings.MIDDLEWARE 顺序执行。
钩子函数:process_request → process_view → 视图 → process_response。
缓存
from django.views.decorators.cache import cache_page
@cache_page(60 * 15)
def heavy_view(request):
...
支持按视图、按片段、按站点多粒度缓存,底层可对接 Memcached、Redis、数据库或文件系统。