Django 从 0 到 1 完整教程

包含实战开发顺序、入门到高级详细指南及完整示例代码

📑 学习导航

🗺️ 新手必读:Django 实战开发顺序指南

很多新手学完语法后依然无从下手。Django 开发不是随机写代码,而是遵循一套严谨的“数据驱动 → 逻辑处理 → 界面展示”流水线。请严格按照以下 6 步顺序进行每一个新功能的开发:

Step 1: 定义数据模型

📁 app/models.py

思考业务需要什么数据表?字段是什么?关系如何?

💡 数据是地基,视图和模板都依赖于数据结构。

Step 2: 同步数据库

⌨️ Terminal

执行 makemigrations + migrate,将 Python 类转换为真实的数据库表。

💡 每次修改 models.py 后必须执行此步。

Step 3: 注册后台管理

📁 app/admin.py

注册模型,通过 Admin 后台手动录入几条测试数据。

💡 在没有前端页面时,先确保数据能正常存取。

Step 4: 编写业务逻辑

📁 app/views.py

查询数据、处理表单、组装上下文字典 (Context)。

💡 View 是连接器,建议先用 HttpResponse 验证逻辑。

Step 5: 配置路由映射

📁 app/urls.py

为刚才写的 View 分配一个 URL 地址,并在主 urls 中 include。

💡 先写 app 级 urls,再在项目级引入,保持解耦。

Step 6: 渲染前端模板

📁 templates/*.html

接收 Context 数据,使用 DTL 语法循环、判断、展示。

💡 当数据和逻辑都通了,再美化界面效率最高。
⚠️ 黄金法则: 永远不要在没有 Model 的情况下写 View,也不要在没有 View 的情况下写 Template。
🔍 调试顺序: 如果页面出错,请按 Model → Migration → Admin → View → URL → Template 的顺序反向排查。

🟢 第一阶段:入门篇 (环境与Hello World)

目标:理解 Django 的 MTV 架构,成功跑通第一个页面。

1. 核心概念:MTV 模式

2. 环境搭建与项目创建

# 安装 Django
pip install django

# 创建项目
django-admin startproject mysite
cd mysite

# 创建应用
python manage.py startapp blog

3. 编写第一个视图 & 路由

blog/views.py:

from django.http import HttpResponse

def index(request):
    return HttpResponse("你好,这是你的第一个 Django 页面!")

blog/urls.py (新建):

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index),
]

mysite/urls.py (主路由):

from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('blog.urls')), 
]

🔵 第二阶段:基础篇 (模板与静态文件)

目标:渲染 HTML 页面,引入 CSS/JS。

1. 配置与编写模板

settings.py 的 TEMPLATES 中配置 DIRS,然后创建 templates/home.html

<!DOCTYPE html>
<html>
<head>
    {% load static %}
    <link rel="stylesheet" href="{% static 'css/style.css' %}">
</head>
<body>
    <h1>{{ title }}</h1>
    {% for article in articles %}
        <p>{{ article }}</p>
    {% endfor %}
</body>
</html>

2. 视图渲染

from django.shortcuts import render

def index(request):
    context = {
        'title': '欢迎来到我的博客',
        'articles': ['Django入门', 'Python基础']
    }
    return render(request, 'home.html', context)

🟡 第三阶段:中级篇 (模型与数据库)

目标:实现数据持久化,使用 Admin 后台。

1. 定义模型与迁移

# blog/models.py
class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    created_time = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

终端执行:python manage.py makemigrations && python manage.py migrate

2. Admin 后台与数据读取

# blog/admin.py
admin.site.register(Article)

# blog/views.py
def index(request):
    articles = Article.objects.all()
    return render(request, 'home.html', {'articles': articles})

🟠 第四阶段:进阶篇 (表单与交互)

目标:接收用户输入,实现 CRUD。

处理 POST 请求

# 模板中必须包含 {% csrf_token %}
<form method="POST">
    {% csrf_token %}
    <input name="title">
    <button>提交</button>
</form>

# views.py
def add_article(request):
    if request.method == 'POST':
        Article.objects.create(
            title=request.POST.get('title'),
            content=request.POST.get('content')
        )
        return redirect('/')

🔴 第五阶段:高级篇 (API、优化与部署)

1. RESTful API (DRF)

使用 Django REST Framework 将数据序列化为 JSON,支持前后端分离。

2. 性能优化

3. 生产部署

标准组合:Nginx (反向代理/静态文件) + Gunicorn (WSGI服务器) + Django

📚 学习路线总结

阶段核心关键词重点掌握内容
入门MTV, URL项目结构, 路由分发
基础Template, StaticDTL语法, 模板继承
中级Model, ORM数据库迁移, Admin后台
进阶Form, Auth表单验证, 用户认证
高级DRF, CacheREST API, Redis, Nginx部署