Django 常用语法速查手册
适用于 Django 3.x / 4.x / 5.x 开发者
最后更新:2025年12月30日
一、项目与应用管理
创建项目
django-admin startproject myproject
创建应用
python manage.py startapp myapp
注册应用(settings.py)
# settings.py
INSTALLED_APPS = [
'myapp',
# ...
]
二、URL 路由
项目级 urls.py
# myproject/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('myapp.urls')),
]
应用级 urls.py
# myapp/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home'),
path('article//', views.article_detail, name='article_detail'),
]
三、视图(Views)
函数视图(FBV)
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse
def home(request):
return render(request, 'home.html', {'title': '首页'})
def article_detail(request, article_id):
article = get_object_or_404(Article, pk=article_id)
return render(request, 'detail.html', {'article': article})
类视图(CBV)
from django.views.generic import ListView, DetailView
from .models import Article
class ArticleListView(ListView):
model = Article
template_name = 'article_list.html'
context_object_name = 'articles'
class ArticleDetailView(DetailView):
model = Article
template_name = 'article_detail.html'
四、模型(Models)
定义模型
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)
author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
def __str__(self):
return self.title
常用字段类型
| 字段 | 说明 |
| CharField(max_length=100) | 短字符串 |
| TextField() | 长文本 |
| IntegerField() | 整数 |
| BooleanField() | 布尔值 |
| DateTimeField(auto_now_add=True) | 创建时间 |
| ForeignKey(OtherModel, on_delete=models.CASCADE) | 外键 |
迁移数据库
python manage.py makemigrations
python manage.py migrate
五、模板(Templates)
变量输出
{{ title }}
过滤器
{{ article.pub_date|date:"Y-m-d" }}
{{ content|truncatewords:50 }}
标签(Tags)
{% if user.is_authenticated %}
欢迎,{{ user.username }}!
{% endif %}
{% for article in articles %}
<h3>{{ article.title }}</h3>
{% empty %}
暂无文章。
{% endfor %}
<a href="{% url 'article_detail' article.id %}">查看详情</a>
继承模板
{# base.html #}
<html>
<body>
{% block content %}{% endblock %}
</body>
</html>
{# home.html #}
{% extends "base.html" %}
{% block content %}
<h1>首页</h1>
{% endblock %}
定义表单(forms.py)
from django import forms
class ArticleForm(forms.Form):
title = forms.CharField(max_length=100)
content = forms.CharField(widget=forms.Textarea)
ModelForm(推荐)
class ArticleForm(forms.ModelForm):
class Meta:
model = Article
fields = ['title', 'content']
在视图中处理表单
def create_article(request):
if request.method == 'POST':
form = ArticleForm(request.POST)
if form.is_valid():
form.save()
return redirect('home')
else:
form = ArticleForm()
return render(request, 'form.html', {'form': form})
模板中渲染表单
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">提交</button>
</form>
七、Admin 后台
注册模型到 Admin
# admin.py
from django.contrib import admin
from .models import Article
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
list_display = ('title', 'author', 'pub_date')
list_filter = ('pub_date',)
search_fields = ('title',)
创建超级用户
python manage.py createsuperuser
八、常用命令
| 命令 | 作用 |
python manage.py runserver | 启动开发服务器 |
python manage.py shell | 进入 Django Shell |
python manage.py collectstatic | 收集静态文件(部署用) |
python manage.py showmigrations | 查看迁移状态 |
python manage.py test | 运行测试 |
📌 提示:本手册基于 Django 4.x / 5.x 编写,适用于大多数现代 Django 项目。