1. Django 是什么?
Django 是一个高级 Python Web 框架,遵循 MTV(Model-Template-View)模式(类似 MVC),提供:
- 全栈功能:ORM、模板引擎、路由、认证等
- 开箱即用:自带 Admin 后台、缓存、国际化支持
- 安全优先:自动防范 SQL 注入、XSS、CSRF 等攻击
2. 核心组件
(1) 模型(Model)
python
# models.py
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
pub_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
- ORM:用 Python 类定义数据库表
- 数据迁移 :
python manage.py makemigrations
→migrate
- 查询 API :
Article.objects.filter(title__contains="Django")
(2) 视图(View)
python
# views.py
from django.shortcuts import render
from .models import Article
def article_list(request):
articles = Article.objects.all()
return render(request, 'blog/list.html', {'articles': articles})
- 处理请求 :接收
HttpRequest
,返回HttpResponse
- 两种形式 :
- 函数视图(FBV)
- 类视图(CBV):
class ArticleListView(ListView)
(3) 模板(Template)
python
<!-- templates/blog/list.html -->
{% for article in articles %}
<h2>{{ article.title }}</h2>
<p>{{ article.content|truncatewords:30 }}</p>
{% endfor %}
- 变量 :
{``{ variable }}
- 标签 :
{% for %}
、{% if %}
- 过滤器 :
|lower
、|date:"Y-m-d"
(4) URL 路由
python
# urls.py
from django.urls import path
from . import views
urlpatterns = [
path('articles/', views.article_list, name='article-list'),
]
- 路径转换器 :
<int:id>
、<slug:title>
- 命名 URL :
{% url 'article-list' %}
3. Django 工作流程
- 请求进入 → URL 路由匹配
- 调用对应视图 → 处理业务逻辑
- 操作模型 → 数据库 CRUD
- 渲染模板 → 返回 HTML 响应
4. 关键特性
(1) Admin 后台
python
# admin.py
from django.contrib import admin
from .models import Article
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
list_display = ('title', 'pub_date')
- 自动生成 :
/admin
界面 - 自定义:列表显示、搜索、过滤
(2) 表单处理
python
# forms.py
from django import forms
class ArticleForm(forms.ModelForm):
class Meta:
model = Article
fields = ['title', 'content']
- 自动验证 :
form.is_valid()
- CSRF 防护 :
{% csrf_token %}
(3) 用户认证
python
from django.contrib.auth import authenticate, login
def login_view(request):
user = authenticate(username=request.POST['username'], password=request.POST['password'])
if user:
login(request, user)
- 内置模型 :
User
、Group
、Permission
- 装饰器 :
@login_required
5. 项目结构
python
myproject/
├── manage.py # 命令行工具
├── myproject/ # 项目配置
│ ├── settings.py # 数据库/中间件等设置
│ ├── urls.py # 根路由
│ └── wsgi.py # 生产部署入口
└── myapp/ # 应用模块
├── migrations/ # 数据库迁移文件
├── admin.py # Admin 配置
├── models.py # 数据模型
├── views.py # 业务逻辑
└── templates/ # 模板文件
6. 快速启动
bash
# 安装
pip install django
# 创建项目
django-admin startproject myproject
cd myproject
# 创建应用
python manage.py startapp myapp
# 运行开发服务器
python manage.py runserver
7. 最佳实践
- 应用拆分 :每个功能模块作为独立应用(如
users
、blog
) - 环境隔离 :使用
python-decouple
管理敏感配置 - 静态文件 :
STATICFILES_DIRS
+collectstatic
- 性能优化 :
- 查询优化:
select_related()
、prefetch_related()
- 缓存:
@cache_page
- 查询优化:
- 安全措施 :
DEBUG=False
生产环境ALLOWED_HOSTS
严格配置
8. 扩展推荐
- REST API:Django REST Framework (DRF)
- 实时功能:Django Channels
- 异步支持:Django 3.1+ 原生异步视图
- 测试工具 :
TestCase
、pytest-django
通过以上内容,您能快速理解 Django 的核心机制。建议从官方教程(https://docs.djangoproject.com/)开始实践,逐步构建完整项目!