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 HttpResponsedef index(request):return HttpResponse("欢迎来到我的博客!")
配置 URL 路由
- 在
blog
目录下创建urls.py
:
# blog/urls.py
from django.urls import path
from . import viewsurlpatterns = [path('', views.index, name='index'),
]
- 在主项目的
urls.py
中包含:
# mysite/urls.py
from django.urls import include, pathurlpatterns = [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 renderdef index(request):return render(request, 'blog/index.html')
刷新页面,你会看到渲染后的 HTML 页面。
七、使用模型(Model)管理数据
1. 定义模型
在 blog/models.py
中定义一个博客文章模型:
from django.db import modelsclass 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 Postadmin.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)
十、推荐学习路径
- 官方文档:Django documentation | Django documentation | Django
- 推荐书籍:
-
- 《Django for Beginners》
- 《Django for APIs》
- 推荐项目练习:
-
- 博客系统
- 任务管理系统
- 电商网站
附录:常用命令汇总
命令 | 说明 |
| 创建项目 |
| 创建应用 |
| 启动开发服务器 |
| 生成迁移文件 |
| 应用迁移 |
| 创建管理员用户 |
| 进入 Django Shell |
| 运行测试 |