1. 引言
Django 是一个高级 Python Web 框架,它鼓励快速开发和干净、实用的设计。由经验丰富的开发者构建,它处理了 Web 开发中的许多麻烦事,让你能够专注于编写应用,而无需重新发明轮子。它是免费且开源的,拥有一个庞大而活跃的社区,非常活跃。
如果你正在寻找一个功能全面、自带管理后台、ORM(对象关系映射)和强大安全特性的框架,Django 是一个非常值得考虑的选择。本文将带你从零开始,了解 Django 的核心概念,并动手构建你的第一个 Web 应用。
2. 为什么选择 Django?
在众多 Python Web 框架(如 Flask、FastAPI)中,Django 以其「全家桶」式的设计理念独树一帜。它提供了 Web 开发中几乎所有常用的组件,让你无需在第三方库的选择上花费过多精力。
- 自带管理后台:Django 会根据你的数据模型自动生成一个功能完善的后台管理界面,极大地提高了内容管理的效率。
- 强大的 ORM:通过 Python 代码操作数据库,无需编写繁琐的 SQL 语句,支持多种数据库后端(如 SQLite、PostgreSQL、MySQL)。
- 完善的安全机制:内置了对 SQL 注入、XSS(跨站脚本攻击)、CSRF(跨站请求伪造)等常见网络攻击的防护。
- 可扩展性:虽然自带很多组件,但 Django 的设计也允许你灵活地替换或扩展,使用第三方应用来满足特定需求。
- 活跃的社区:拥有海量的第三方包、详尽的官方文档和丰富的学习资源,遇到问题很容易找到解决方案。
3. 环境准备与安装
在开始之前,请确保你的电脑上已经安装了 Python 3.8 或更高版本。推荐使用虚拟环境来隔离项目依赖。
首先,创建并激活虚拟环境:
bash
# 创建虚拟环境
python -m venv myenv
# 激活虚拟环境(Windows)
myenv\Scripts\activate
# 激活虚拟环境(macOS / Linux)
source myenv/bin/activate
接下来,使用 pip 安装 Django:
bash
pip install django
安装完成后,可以通过以下命令验证 Django 是否安装成功:
bash
python -m django --version
4. 创建第一个 Django 项目
Django 使用命令行工具来管理项目。打开终端,进入你想要存放项目的目录,运行以下命令创建一个名为 mysite 的项目:
bash
django-admin startproject mysite
这个命令会生成一个名为 mysite 的目录,其内部结构如下:
text
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
manage.py:一个命令行工具,用于与 Django 项目进行各种交互(如运行开发服务器、创建应用等)。mysite/settings.py:项目的配置文件,包含数据库设置、应用注册、静态文件路径等。mysite/urls.py:URL 声明,相当于网站的「目录」,负责将 URL 请求路由到对应的视图函数。mysite/asgi.py和mysite/wsgi.py:用于部署项目的 ASGI 和 WSGI 入口点。
进入项目目录并启动开发服务器:
bash
cd mysite
python manage.py runserver
在浏览器中访问 http://127.0.0.1:8000/,你会看到一个欢迎页面,恭喜你,你的第一个 Django 项目已经成功运行了!
5. 创建应用与理解 MTV 架构
Django 采用 MTV(Model-Template-View)架构模式,这是对传统 MVC(Model-View-Controller)的一种变体。理解这个模式是掌握 Django 的关键。
- Model(模型):定义数据结构,负责与数据库交互。每个模型类对应数据库中的一张表。
- Template(模板):负责呈现数据,是 HTML 文件,其中可以嵌入 Django 模板语言(DTL)来动态显示内容。
- View(视图):负责业务逻辑,接收 HTTP 请求,从 Model 中获取数据,并将其传递给 Template 渲染,最终返回 HTTP 响应。
一个项目通常由多个「应用」(App)组成,每个应用负责一个特定的功能模块。创建一个名为 blog 的应用:
bash
python manage.py startapp blog
创建后,需要在 mysite/settings.py 的 INSTALLED_APPS 列表中注册这个新应用:
python
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog', # 新增
]
6. 定义模型(Model)
在 blog/models.py 中定义一个简单的文章模型:
python
from django.db import models
class Article(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
这个模型定义了三个字段:标题(CharField)、内容(TextField)和发布日期(DateTimeField)。__str__ 方法用于在后台管理中显示更友好的对象名称。
接下来,生成数据库迁移文件并执行迁移,将模型同步到数据库:
bash
python manage.py makemigrations blog
python manage.py migrate
7. 编写视图(View)与配置 URL
视图函数接收一个 HttpRequest 对象,并返回一个 HttpResponse 对象。在 blog/views.py 中编写一个简单的视图,用于显示所有文章:
python
from django.shortcuts import render
from .models import Article
def article_list(request):
articles = Article.objects.all().order_by('-pub_date')
return render(request, 'blog/article_list.html', {'articles': articles})
现在,我们需要将 URL 与这个视图关联起来。在 blog 应用目录下创建一个新的 urls.py 文件:
python
from django.urls import path
from . import views
urlpatterns = [
path('', views.article_list, name='article_list'),
]
然后,在项目的 mysite/urls.py 中包含这个应用的 URL 配置:
python
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
]
8. 创建模板(Template)
在 blog 应用目录下创建 templates/blog/ 目录,并在其中新建 article_list.html 文件:
html
<!DOCTYPE html>
<html>
<head>
<title>我的博客</title>
</head>
<body>
<h1>文章列表</h1>
<ul>
{% for article in articles %}
<li>
<h2>{{ article.title }}</h2>
<p>{{ article.content }}</p>
<small>{{ article.pub_date }}</small>
</li>
{% endfor %}
</ul>
</body>
</html>
Django 模板语言使用 {% %} 表示逻辑控制(如循环、判断),使用 {``{ }} 输出变量。
9. 使用 Django 管理后台
Django 自带的管理后台是它的一大亮点。首先,创建一个超级用户:
bash
python manage.py createsuperuser
按照提示输入用户名、邮箱和密码。然后,在 blog/admin.py 中注册我们的模型:
python
from django.contrib import admin
from .models import Article
admin.site.register(Article)
启动开发服务器,访问 http://127.0.0.1:8000/admin/,使用刚才创建的超级用户登录,你就可以通过图形化界面来添加、编辑和删除文章了。
10. 总结与下一步
本文带你走完了 Django 开发的一个完整流程:从环境搭建、创建项目,到定义模型、编写视图、创建模板,再到使用强大的管理后台。这只是一个开始,Django 的世界还有更多精彩内容等待你去探索。
接下来,你可以尝试:
- 学习使用 Django 的表单(Forms)来处理用户输入。
- 深入了解 Django 的认证系统,实现用户注册和登录。
- 使用 Django REST Framework 来构建 RESTful API。
- 学习如何将 Django 应用部署到生产环境(如使用 Gunicorn + Nginx)。
Django 的官方文档非常详尽,是学习的最佳资源。祝你编码愉快!