Django 入门详解:从零开始构建你的第一个 Web 应用

Django 是一个高级的 Python Web 框架,鼓励快速开发和干净、实用的设计。它遵循"不要重复造轮子(Don't Repeat Yourself, DRY)"的原则,内置了诸如用户认证、内容管理、表单处理等常见功能,非常适合构建内容驱动的网站。

本文将带你从零开始,逐步了解 Django 的基本概念、项目结构、视图、模板、模型、路由等核心内容,并通过一个简单的博客应用示例,帮助你快速上手 Django 开发。


一、Django 简介

1. 什么是 Django?

Django 是一个由 Python 编写的开源 Web 框架,采用 MTV(Model-Template-View) 架构模式:

  • Model(模型):负责与数据库交互,定义数据结构。
  • Template(模板):负责展示层,即 HTML 页面。
  • View(视图):处理业务逻辑,决定将哪些数据展示给模板。

2. Django 的特点

  • 快速开发:内置大量实用功能,减少重复开发。
  • 安全性强:自动防御常见的安全漏洞(如 XSS、CSRF)。
  • 可扩展性高:支持多数据库、缓存、中间件等高级功能。
  • 社区活跃:拥有庞大的社区和丰富的第三方库。

二、安装 Django

1. 安装 Python 环境

确保你已安装 Python 3.8+,可以通过以下命令检查:

复制代码
python --version

2. 创建虚拟环境(推荐)

复制代码
python -m venv venv
source venv/bin/activate  # Linux/macOS
venv\Scripts\activate     # Windows

也可以使用conda

3. 安装 Django

复制代码
pip install django

验证是否安装成功:

复制代码
python -m django --version

三、创建你的第一个 Django 项目

1. 创建项目

复制代码
django-admin startproject mysite
cd mysite

目录结构如下:

复制代码
mysite/
├── manage.py
└── mysite/
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

2. 启动开发服务器

复制代码
python manage.py runserver

访问 http://127.0.0.1:8000/,看到 Django 的欢迎页面表示项目创建成功。


四、创建第一个应用(App)

Django 鼓励将功能模块化,一个项目可以包含多个应用(App)。

1. 创建应用

复制代码
python manage.py startapp blog

目录结构如下:

复制代码
blog/
├── migrations/
├── __init__.py
├── admin.py
├── apps.py
├── models.py
├── tests.py
└── views.py

2. 注册应用

打开 mysite/settings.py,在 INSTALLED_APPS 中添加:

复制代码
INSTALLED_APPS = [
    ...
    'blog',
]

五、编写第一个视图(View)

blog/views.py 中添加:

复制代码
from django.http import HttpResponse

def index(request):
    return HttpResponse("欢迎来到我的博客!")

配置 URL 路由

  1. blog 目录下创建 urls.py

    blog/urls.py

    from django.urls import path
    from . import views

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

  2. 在主项目的 urls.py 中包含:

    mysite/urls.py

    from django.urls import include, path

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

现在访问 http://127.0.0.1:8000/blog/,你会看到页面显示"欢迎来到我的博客!"。


六、使用模板(Template)

1. 创建模板目录

blog 应用下创建 templates/blog/ 目录:

复制代码
blog/
└── templates/
    └── blog/
        └── index.html

index.html 中写入:

复制代码
<!DOCTYPE html>
<html>
  <head>
    <title>我的博客</title>
  </head>
  <body>
    <h1>欢迎来到我的博客!</h1>
  </body>
</html>

2. 修改视图使用模板

复制代码
# blog/views.py
from django.shortcuts import render

def index(request):
    return render(request, 'blog/index.html')

刷新页面,你会看到渲染后的 HTML 页面。


七、使用模型(Model)管理数据

1. 定义模型

blog/models.py 中定义一个博客文章模型:

复制代码
from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    pub_date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

2. 生成迁移文件

复制代码
bash


深色版本

python manage.py makemigrations

3. 应用迁移

复制代码
python manage.py migrate

4. 注册模型到 Admin

blog/admin.py 中注册模型:

复制代码
from django.contrib import admin
from .models import Post

admin.site.register(Post)

5. 创建超级用户

复制代码
python manage.py createsuperuser

登录 http://127.0.0.1:8000/admin,你可以添加、编辑、删除博客文章。


八、展示数据库中的数据

1. 修改视图,展示所有文章

复制代码
def index(request):
    posts = Post.objects.all()
    return render(request, 'blog/index.html', {'posts': posts})

2. 修改模板,显示文章列表

复制代码
<!-- blog/index.html -->
<h1>我的博客</h1>
<ul>
  {% for post in posts %}
  <li>{{ post.title }} - {{ post.pub_date }}</li>
  {% endfor %}
</ul>

九、总结

通过本文,你已经完成以下内容:

  • 创建了一个 Django 项目和应用
  • 编写了第一个视图并配置了 URL 路由
  • 使用模板渲染 HTML 页面
  • 定义模型并与数据库交互
  • 使用 Admin 管理后台
  • 查询并展示数据库中的数据

这只是 Django 的冰山一角。接下来可以学习:

  • 表单处理(Form)
  • 用户认证(Authentication)
  • REST API(使用 Django REST Framework)
  • 部署到生产环境(如 Nginx + Gunicorn)

十、推荐学习路径

  1. 官方文档:Django documentation | Django documentation | Django
  2. 推荐书籍:
    • 《Django for Beginners》
    • 《Django for APIs》
  1. 推荐项目练习:
    • 博客系统
    • 任务管理系统
    • 电商网站

附录:常用命令汇总

|------------------------------------|-----------------|
| 命令 | 说明 |
| django-admin startproject | 创建项目 |
| python manage.py startapp | 创建应用 |
| python manage.py runserver | 启动开发服务器 |
| python manage.py makemigrations | 生成迁移文件 |
| python manage.py migrate | 应用迁移 |
| python manage.py createsuperuser | 创建管理员用户 |
| python manage.py shell | 进入 Django Shell |
| python manage.py test | 运行测试 |