第 15 章 · Django 快速入门
本章目标:理解 Django MTV(Model–Template–View)架构;使用官方命令 django-admin startproject blogdemo 创建项目;配置应用、模型、Admin、URL 与模板;运行开发服务器并完成一篇博客文章的增删改查演示;不涉及任何真实商城业务代码。
学时建议:5~6 小时(含 2 小时跟练)
前置:ch10 虚拟环境与 pip;ch05~ch07 函数、OOP 与魔法方法。
15.1 Django 是什么
Django 是 Python 生态中成熟的 Web 框架,内置 ORM、Admin、表单、模板、用户认证等,适合快速构建内容站、后台与 API。
浏览器请求
→ URL 路由 (urls.py)
→ 视图 View (views.py)
→ 模型 Model (models.py) ↔ 数据库
→ 模板 Template (.html) 渲染响应
| MTV | 类似 MVC 中的 |
|---|---|
| Model | 数据层 |
| Template | 表现层 |
| View | 控制层(Django 的 View ≈ Controller) |
官方文档:https://docs.djangoproject.com/
15.2 创建项目 blogdemo
cd ~/python-learn
python -m venv .venv
# 激活 .venv 后
pip install "Django>=4.2,<5"
django-admin --version
django-admin startproject blogdemo
cd blogdemo
python manage.py runserver
浏览器访问 http://127.0.0.1:8000/,看到火箭页即成功。
blogdemo/
├── manage.py
└── blogdemo/
├── __init__.py
├── settings.py
├── urls.py
├── asgi.py
└── wsgi.py
| 文件 | 作用 |
|---|---|
manage.py | 项目管理入口 |
settings.py | 全局配置 |
urls.py | 根 URL 配置 |
wsgi.py | 生产部署入口 |
以上为 Django 官方教程标准结构,与任何企业内部仓库无关。
15.3 创建应用 posts
python manage.py startapp posts
在 blogdemo/settings.py 的 INSTALLED_APPS 中注册:
INSTALLED_APPS = [
# ...
"posts",
]
posts/
├── admin.py
├── apps.py
├── models.py
├── views.py
├── urls.py # 需自建
└── migrations/
15.4 定义模型 Model
posts/models.py:
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
slug = models.SlugField(max_length=200, unique=True)
body = models.TextField()
published = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
ordering = ["-created_at"]
def __str__(self):
return self.title
迁移数据库:
python manage.py makemigrations posts
python manage.py migrate
| 字段类型 | 说明 |
|---|---|
CharField | 短文本 |
TextField | 长文本 |
BooleanField | 布尔 |
DateTimeField | 日期时间 |
SlugField | URL 友好标识 |
默认使用 SQLite(db.sqlite3),教学足够。
15.5 Admin 后台
posts/admin.py:
from django.contrib import admin
from .models import Post
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
list_display = ("title", "published", "created_at")
list_filter = ("published",)
search_fields = ("title", "body")
prepopulated_fields = {"slug": ("title",)}
创建超级用户并启动:
python manage.py createsuperuser
python manage.py runserver
访问 http://127.0.0.1:8000/admin/,登录后管理文章。