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)

定义表单(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 项目。