Django 核心概念

FreeGuideOnline 最新 2026-07-14
{% block content %}{% endblock %} ``` 子模板通过 `{% extends "base.html" %}` 继承,并填充块: ```html {% extends "base.html" %} {% block title %}Blog{% endblock %} {% block content %}

Article List

... {% endblock %} ```

在视图中渲染模板使用 render() 快捷函数:

from django.shortcuts import render

def article_list(request):
    articles = Article.objects.all()
    return render(request, 'blog/article_list.html', {'articles': articles})

表单处理

Django 的表单系统提供数据验证和 HTML 表单生成功能。创建一个表单类:

from django import forms

class ArticleForm(forms.Form):
    title = forms.CharField(max_length=200)
    content = forms.CharField(widget=forms.Textarea)

或基于模型自动创建:

from django.forms import ModelForm
from .models import Article

class ArticleModelForm(ModelForm):
    class Meta:
        model = Article
        fields = ['title', 'content']

视图中的典型处理流程:

def article_create(request):
    if request.method == 'POST':
        form = ArticleForm(request.POST)
        if form.is_valid():
            # 处理有效数据
            title = form.cleaned_data['title']
            ...
            return redirect('article-list')
    else:
        form = ArticleForm()
    return render(request, 'blog/article_form.html', {'form': form})

模板中显示表单:

<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Submit</button>
</form>

{% csrf_token %} 提供跨站请求伪造保护,是 POST 请求的安全必须。

管理员界面

Django 开箱即用提供强大管理后台。只需在 admin.py 中注册模型:

from django.contrib import admin
from .models import Article

@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
    list_display = ('title', 'author', 'pub_date')
    search_fields = ('title',)