Django入门教程:搭建你的第一个Python网站
开篇:Django究竟是什么?它能用来做什么?

你是否想过,用 Python 写一个属于自己的网站?如果这个问题让你感到陌生或好奇,那恭喜你,这篇文章将为你打开一扇新的大门。今天我们要介绍的是 Django——一个用 Python 编写的强大且易于上手的 Web开发框架。
那么问题来了,什么是 Web 框架呢?简单来说,它是帮你快速构建网站的工具包。就像盖房子需要砖头、水泥、钢筋一样,Web框架为我们提供了网页开发中常用的功能模块,比如处理用户请求、连接数据库、管理页面路由等。有了它,你就不用重复造轮子了,专注做自己感兴趣的部分。
Django 最大的特点是「开箱即用」,这意味着它自带了许多功能(例如后台管理系统、用户认证、表单验证等),非常适合快速开发复杂的网站项目。很多知名网站,如 Instagram 和 Pinterest,都是基于 Django 构建的。
在本教程中,我们将从零开始,一步步带你搭建一个简单的 Django 网站。即使你是编程新手,也不用担心,我们会把每个知识点都讲得通俗易懂,并配有实际操作的代码示例,让你边学边动手,轻松迈出 Web 开发的第一步。
环境准备:搭建你的 Django 开发环境

在正式编写代码之前,我们需要先准备好运行 Django 的开发环境。不用担心,这个过程并不复杂,我们只需要安装几个关键的软件和库。
第一步:安装 Python
Django 是基于 Python 的,所以第一步就是确保你的电脑上已经安装了 Python。你可以访问 Python 官网 下载并安装最新版本的 Python(建议使用 3.8 或更新的版本)。
安装完成后,在命令行中输入以下命令检查是否安装成功:
python --version
或者如果你使用的是 Linux/macOS 系统,可能是:
python3 --version
你会看到类似这样的输出:
Python 3.11.5
如果没有显示版本号,请重新检查安装步骤。
第二步:创建虚拟环境
为了防止不同项目之间出现依赖冲突,推荐大家使用 Python 的虚拟环境来隔离项目依赖。
在终端或命令行中进入你要存放项目的文件夹,并运行以下命令:
python -m venv myenv
这会创建一个名为 myenv 的虚拟环境文件夹。接下来激活它:
- Windows 系统:
myenv\Scripts\activate.bat - macOS/Linux 系统:
source myenv/bin/activate
激活后,命令行前会显示 (myenv),表示你现在处于虚拟环境中。
第三步:安装 Django
现在我们可以安装 Django 了。在激活虚拟环境的前提下,运行:
pip install django
等待安装完成后,可以通过以下命令查看 Django 是否安装成功:
django-admin --version
如果能看到类似这样的输出:
4.2.5
说明你已经成功安装了 Django!
第四步:创建你的第一个 Django 项目
终于到了激动人心的一步!让我们用 Django 创建一个项目骨架。
在命令行中执行:
django-admin startproject mysite
这条命令会在当前目录下生成一个名为 mysite 的文件夹,里面包含了一些基本的 Django 配置文件。你可以进入该文件夹:
cd mysite
然后运行以下命令启动本地开发服务器:
python manage.py runserver
你会看到类似于下面的输出:
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
现在,打开浏览器访问 http://127.0.0.1:8000,你应该可以看到 Django 的欢迎页面!🎉
这就是你的第一个 Django 网站雏形!
核心概念:Django 中的三大基石

在继续深入之前,我们先来了解 Django 的三个核心组成部分。它们分别是:
1. 模型(Model)
想象一下你在经营一个图书馆,你会怎么管理书的信息呢?比如每本书的名字、作者、出版日期等等。这时候我们就需要用到“模型”这个概念。
模型本质上是对数据库结构的描述,它告诉 Django 数据应该以什么样的方式存储。你不需要直接写 SQL 语句,Django 会自动帮你生成数据库表结构。
举个例子,我们来定义一个“书”的模型:
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=50)
published_date = models.DateField()
def __str__(self):
return self.title
这里我们创建了一个叫 Book 的类,它有三个字段:标题、作者和出版日期。这些数据会自动保存到数据库里。
2. 视图(View)
视图负责接收用户的请求,并返回相应的结果(通常是 HTML 页面)。你可以把它理解成一个“动作处理器”。
例如,当用户访问 /books 这个网址时,我们需要展示所有书籍的信息。这时就要在视图中编写逻辑来获取数据库中的书本数据,并渲染成网页返回给用户。
下面是一个简单的视图例子:
from django.shortcuts import render
from .models import Book
def book_list(request):
books = Book.objects.all()
return render(request, 'books/list.html', {'books': books})
这个函数叫做 book_list,它的作用是:
- 查询所有的书;
- 使用模板引擎(后面会讲)把数据插入到 HTML 模板中;
- 返回最终的网页给用户。
3. 模板(Template)
模板的作用是美化网页内容。你可能听过 HTML,它是一种标记语言,用于构建网页的结构。Django 使用一种特殊的模板语法,可以很方便地把动态数据插入到 HTML 中。
比如我们想在网页上列出所有书籍信息,我们可以创建一个叫 list.html 的模板文件:
<!DOCTYPE html>
<html>
<head><title>图书列表</title></head>
<body>
<h1>图书列表</h1>
<ul>
{% for book in books %}
<li>{{ book.title }} - {{ book.author }}</li>
{% endfor %}
</ul>
</body>
</html>

这段代码看起来像 HTML,但其中的 {% %} 和 {{ }} 是 Django 模板特有的语法,分别用于控制流程(比如循环)和显示变量内容。
以上就是 Django 的核心三要素:模型(管理数据)、视图(处理逻辑)和模板(呈现界面)。它们共同构成了 MVC(Model-View-Controller)架构,是现代 Web 开发的基础结构。
掌握了这三个部分,你就能开始构建自己的网站啦!
实战项目:一步步完成你的第一个 Django 网站

现在,我们通过一个完整的实战项目来巩固前面的知识。我们将创建一个简易的“博客系统”,实现文章发布和浏览功能。
第一步:创建 App
Django 将不同的功能模块称为“App”。一个项目可以包含多个 App,每个 App 负责一部分功能。
我们在项目根目录(mysite)运行如下命令来创建一个名为 blog 的 App:
python manage.py startapp blog
接下来,需要把这个 App 添加进项目配置中。打开 mysite/settings.py 文件,找到 INSTALLED_APPS,在里面加上 'blog':
INSTALLED_APPS = [
...
'blog',
]
第二步:设计模型(Model)
我们要为博客系统设计一个最基础的数据结构:文章。每篇文章至少要有标题、正文和发布时间。
打开 blog/models.py 文件,编写以下代码:
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
这里我们定义了一个 Post 类,有三个字段:
title: 标题(最大长度 200 字符)content: 正文(文本类型)created_at: 创建时间(自动记录)
保存后,在命令行中运行:
python manage.py makemigrations
python manage.py migrate
这两个命令会根据你定义的模型自动生成数据库表结构。
第三步:创建视图(View)
我们现在要写一个视图函数,让访问者能够看到所有的博客文章。
编辑 blog/views.py:
from django.shortcuts import render
from .models import Post
def post_list(request):
posts = Post.objects.all().order_by('-created_at')
return render(request, 'blog/post_list.html', {'posts': posts})
这个函数从数据库中取出所有文章,并按时间倒序排列。
第四步:配置 URL 路由
为了让用户能访问我们的视图,还需要设置 URL 路径。
在 blog 文件夹中新建一个 urls.py 文件,内容如下:
from django.urls import path
from . import views
urlpatterns = [
path('', views.post_list, name='post_list'),
]
然后回到项目主目录的 mysite/urls.py,添加对 blog app 的引用:
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path('blog/', include('blog.urls')),
]
现在访问 http://127.0.0.1:8000/blog 应该会出现错误提示,因为还没有模板。
第五步:创建模板
我们需要创建一个 HTML 页面来展示文章列表。在项目根目录中创建文件夹结构如下:
templates/blog/post_list.html
然后在该文件中写入以下 HTML 代码:
<!DOCTYPE html>
<html>
<head><title>我的博客</title></head>
<body>
<h1>欢迎来到我的博客</h1>
<ul>
{% for post in posts %}
<li>
<h2>{{ post.title }}</h2>
<p>{{ post.content|truncatewords:30 }}</p>
<small>{{ post.created_at }}</small>
<hr />
</li>
{% empty %}
<li>暂无文章</li>
{% endfor %}
</ul>
</body>
</html>
别忘了告诉 Django 模板的位置。修改 settings.py 中的 TEMPLATES 设置:
'DIRS': [BASE_DIR / 'templates'],
再次运行服务器:
python manage.py runserver
访问 http://127.0.0.1:8000/blog,你应该能看到页面,但目前没有文章。我们可以手动添加一些测试数据。
第六步:使用后台管理功能添加数据
Django 自带一个强大的后台管理系统。我们先注册我们的模型。
打开 blog/admin.py 文件:
from django.contrib import admin
from .models import Post
admin.site.register(Post)
然后创建管理员账号:
python manage.py createsuperuser
输入用户名、邮箱和密码后,访问 http://127.0.0.1:8000/admin,登录后点击 “Posts > Add” 创建几篇文章。刷新页面即可看到刚刚添加的文章!
至此,你的第一个 Django 博客网站就完成了!🎉
新手常见问题及解答
在学习过程中,初学者常常会遇到各种各样的问题。以下是几个常见的问题及其解决方案:
Q1:Django 报错 "No module named 'django'" 是怎么回事?
A1:说明 Django 没有正确安装,或者你没有激活虚拟环境。请按照前面提到的方法重新安装 Django,并确认是否已激活虚拟环境。
Q2:运行 runserver 时报错 "You have unapplied migrations" 怎么办?
A2:这是因为你创建了模型但还没应用迁移文件。解决方法是在命令行中运行:
python manage.py makemigrations
python manage.py migrate
Q3:模板文件找不到,如何定位问题?
A3:检查以下几个方面:
- 模板路径是否写正确;
settings.py中TEMPLATES['DIRS']是否指向正确的文件夹;- 模板文件名称是否和
render()函数中的参数一致; - 是否重启了服务(有时候改动不会自动生效);
Q4:页面显示为空,没有任何内容?
A4:很可能是数据库中没有数据。尝试用后台管理功能添加一条数据,或者在视图中打印数据进行调试:
print(posts) # 在视图中加一句打印语句
Q5:为什么访问不到我设定的网址?
A5:确认 URL 配置是否正确:
- App 的
urls.py是否正确挂载? - 主项目的
urls.py是否正确引入了子 URL? - 是否有拼写错误?
- 有没有忘记重启服务器?
Q6:Django 启动后报错“Port 8000 is already in use”
A6:这是端口被占用导致的。可以用下面的命令换一个端口运行服务器:
python manage.py runserver 8080
访问 http://127.0.0.1:8080 即可。
学习建议:下一步该学什么?
恭喜你完成了第一个 Django 项目!接下来你可以沿着以下几个方向继续学习:
1. 更深入地了解 Django 的各个组件
- 表单处理(Form):学习如何让用户提交信息;
- 用户认证(User Authentication):实现登录、注册、权限管理等功能;
- REST API 接口:使用 Django REST Framework 构建前后端分离的接口;
- 中间件(Middleware):了解 Django 请求处理流程;
- 静态文件与媒体文件管理;
- 消息框架(Messages Framework);
2. 提升前端技能
- HTML/CSS 基础;
- JavaScript 简介;
- Bootstrap 快速布局;
- Django 模板继承和静态资源管理;
3. 部署上线
- 学习使用 Gunicorn + Nginx 部署生产环境;
- 使用 SQLite 到 PostgreSQL 的迁移;
- 了解域名绑定和 HTTPS 配置;
4. 拓展项目实战
- 构建个人博客增强版(添加分类、评论功能);
- 开发论坛或问答系统;
- 实现电商购物车系统;
- 学习 Django Channels 实现实时通信;
5. 阅读官方文档与社区资源
- Django 官方中文文档
- Real Python 的 Django 教程系列
- GitHub 上查找开源 Django 项目练习阅读源码
随着你掌握越来越多的知识,你会发现 Django 不仅是学习 Web 开发的好起点,也是一把真正能够“造大船”的利器。坚持下去,很快你就能独立开发属于自己的完整网站了!
希望这篇教程能帮助你顺利入门 Django。记住,学习编程最重要的是多动手实践,不要害怕犯错。每一次调试、每一次报错,都是通向高手之路的重要一步。加油!🌟

评论 0