Django 教程:从零开始搭建你的第一个 Web 项目
你是否曾想过,自己也能做出一个功能完整、界面清爽的网站?不用等团队,也不用依赖复杂工具。今天,我们就来手把手带你用 Django 搭建你的第一个 Web 项目。无论你是编程新手,还是已经接触过其他框架的开发者,这篇 Django 教程 都会帮你打通从“会写代码”到“能建网站”的最后一公里。
Django 是一个用 Python 编写的高级 Web 框架,它遵循“约定优于配置”的原则,让你能快速开发出稳定、可维护的 Web 应用。它内置了用户认证、数据库操作、表单处理、后台管理等功能,就像是一个“全副武装”的开发助手。
想象一下:你不需要从零造轮子,而是站在一个成熟的框架基础上,专注业务逻辑的实现。这就是 Django 的魅力所在。
安装 Django 与初始化项目
在开始之前,确保你的电脑上已经安装了 Python 3.8 或更高版本。你可以通过以下命令检查:
python --version
如果未安装,建议使用 Python 官方下载页面 安装。
接下来,我们使用 pip 安装 Django。打开终端或命令行工具,执行:
pip install django
安装完成后,验证是否成功:
django-admin --version
你应该看到类似 4.2.7 的版本号,说明安装成功。
现在,创建你的第一个 Django 项目。假设项目名为 myblog:
django-admin startproject myblog
这条命令会生成一个包含多个文件和目录的项目结构。其中最核心的是:
manage.py:Django 的命令行工具,用于启动服务器、创建应用、运行测试等。myblog/:项目的配置文件夹,包含settings.py(设置)、urls.py(路由)等。
进入项目目录:
cd myblog
启动开发服务器:
python manage.py runserver
打开浏览器,访问 http://127.0.0.1:8000,你会看到 Django 的欢迎页面。恭喜!你的第一个 Django 项目已经跑起来了。
创建应用:模块化开发的核心思想
在 Django 中,一个项目可以包含多个“应用”(App)。每个应用负责一个特定功能,比如用户管理、文章发布、评论系统等。这种设计让项目结构清晰,便于维护。
我们来创建一个名为 blog 的应用:
python manage.py startapp blog
执行后,你会在项目根目录下看到新增的 blog/ 文件夹,里面包含:
models.py:定义数据库模型views.py:处理请求和返回响应urls.py:定义该应用的 URL 路由admin.py:注册模型到后台管理界面
✅ 小贴士:把“应用”想象成一个独立的“功能模块”,就像乐高积木。你可以在一个项目里拼接多个应用,组合出复杂系统。
数据库模型设计:用代码定义数据结构
Django 的强大之处在于它提供了“ORM”(对象关系映射)机制。你不需要写 SQL 语句,而是用 Python 代码来定义数据库表。
打开 blog/models.py,我们来定义一个简单的“文章”模型:
from django.db import models
class Article(models.Model):
# 文章标题,最大长度为 200 个字符,不能为空
title = models.CharField(max_length=200, verbose_name="文章标题")
# 文章正文,使用文本字段,支持大段内容
content = models.TextField(verbose_name="文章内容")
# 创建时间,自动记录当前时间
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
# 更新时间,每次保存时自动更新
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")
# 定义在后台管理界面中显示的名称
def __str__(self):
return self.title # 返回标题作为对象的字符串表示
✅ 注释说明:
CharField用于存储短文本,如标题TextField用于长文本,如文章正文DateTimeField用于时间字段,auto_now_add表示首次创建时记录时间,auto_now表示每次保存都更新时间__str__方法让 Django 在管理后台显示有意义的文本
定义完模型后,需要生成数据库迁移文件并应用到数据库:
python manage.py makemigrations
这会根据模型变化生成一个迁移文件,记录数据库的变更。
然后执行:
python manage.py migrate
这一步将迁移文件应用到数据库,真正创建表。
编写视图与 URL 路由:让页面“动”起来
现在数据库有了,下一步是让网页能访问这些数据。在 Django 中,视图(View)是处理请求和返回响应的函数或类。
打开 blog/views.py,添加一个视图函数:
from django.shortcuts import render
from django.http import HttpResponse
from .models import Article # 导入刚刚定义的 Article 模型
def index(request):
# 从数据库中获取所有文章,按创建时间倒序排列
articles = Article.objects.all().order_by('-created_at')
# 渲染模板,并将文章数据传入
return render(request, 'blog/index.html', {'articles': articles})
✅ 注释说明:
render()函数用于加载 HTML 模板,并将数据传递给模板Article.objects.all()是 ORM 查询语句,获取所有文章order_by('-created_at')表示按创建时间降序排列,最新的在最前面
接下来,配置 URL 路由。在 blog/urls.py 中添加:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'), # 访问 /blog/ 时调用 index 视图
]
然后在主项目 myblog/urls.py 中包含这个应用的路由:
from django.contrib import admin
from django.urls import path, include # include 用于包含其他应用的路由
urlpatterns = [
path('admin/', admin.site.urls), # Django 默认后台管理路径
path('blog/', include('blog.urls')), # 将 /blog/ 开头的请求交给 blog 应用处理
]
现在访问 http://127.0.0.1:8000/blog/,你应该能看到页面报错:“模板未找到”。
这是因为我们还没有创建模板文件。
创建模板:HTML 与 Django 的连接桥梁
Django 使用模板系统来渲染 HTML 页面。创建目录结构:
myblog/
├── blog/
│ ├── templates/
│ │ └── blog/
│ │ └── index.html
在 templates/blog/index.html 中写入:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>我的博客</title>
<style>
body { font-family: Arial, sans-serif; margin: 20px; }
.article { border: 1px solid #ccc; margin-bottom: 20px; padding: 15px; }
.title { font-size: 1.5em; color: #333; }
.date { color: #666; font-size: 0.9em; }
</style>
</head>
<body>
<h1>文章列表</h1>
<!-- 遍历文章列表 -->
{% for article in articles %}
<div class="article">
<h2 class="title">{{ article.title }}</h2>
<p class="date">发布时间:{{ article.created_at }}</p>
<p>{{ article.content|truncatewords:30 }}</p>
</div>
{% endfor %}
<!-- 如果没有文章 -->
{% if not articles %}
<p>暂无文章,快去写一篇吧!</p>
{% endif %}
</body>
</html>
✅ 注释说明:
{% for %}是 Django 模板的循环语法,用于遍历列表{{ }}用于输出变量内容,如article.title|truncatewords:30是过滤器,截取前 30 个单词{% if %}是条件判断,判断是否有文章
现在刷新页面,你应该能看到文章列表了!虽然目前还空空如也,但结构已经完整。
后台管理:快速添加文章内容
Django 提供了强大的后台管理界面,让你无需编写前端页面就能管理数据。
首先,打开 blog/admin.py,注册你的模型:
from django.contrib import admin
from .models import Article
admin.site.register(Article)
然后创建一个超级用户,用于登录后台:
python manage.py createsuperuser
按照提示输入用户名、邮箱和密码(建议密码复杂些)。
完成之后,启动服务器:
python manage.py runserver
访问 http://127.0.0.1:8000/admin/,使用你创建的账号登录。
你会看到“Article”选项,点击进入后可以添加、编辑、删除文章。
✅ 小技巧:你也可以自定义后台显示字段、搜索框、筛选条件,让管理更高效。
总结与下一步建议
通过这篇 Django 教程,你已经完成了从环境搭建、模型设计、视图路由到模板渲染和后台管理的全流程。你不仅学会了如何用 Python 构建一个完整的 Web 应用,更重要的是理解了 Django 的核心设计思想:模块化、可扩展、开箱即用。
现在,你可以尝试以下进阶操作:
- 添加用户注册与登录功能(使用 Django 自带的
auth模块) - 为文章添加分类和标签
- 使用 Bootstrap 或 Tailwind CSS 美化页面
- 部署到云服务器(如阿里云、腾讯云、Vercel)
记住,每一个大项目都是从一个“Hello, World”开始的。你已经迈出了最关键的一步。
继续写代码,继续做项目。当你再次打开浏览器,看到自己亲手搭建的网站运行时,那种成就感,是任何语言都无法替代的。
愿你在 Django 的世界里,越走越远。