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

Django是一个强大的Python Web框架,它帮助开发者快速、高效地构建网站。你可以把它理解成一套“搭积木”的工具——有了它,你不需要从零开始写所有代码,而是可以用现成的模块来搭建功能丰富的网站。比如,博客系统、电商网站、企业官网、后台管理系统等等都可以用Django来实现。
Django的设计理念是“开箱即用”(batteries-included),它自带了数据库管理、用户认证、表单处理等功能,让开发者可以专注于业务逻辑,而不是重复造轮子。它的安全性强,社区活跃,文档齐全,非常适合初学者上手Web开发。如果你希望掌握一个既能用于个人项目又能胜任企业级应用的后端框架,Django是一个非常好的选择。
环境准备:安装Django与配置基础环境

在开始使用Django之前,我们需要准备好开发环境。这一部分会一步步带你完成Python和Django的安装,并教你如何验证安装是否成功。
1. 安装Python
Django是一个基于Python的框架,所以首先我们要确保电脑上已经安装了Python。目前推荐使用Python 3.8或更高版本。
Windows
- 前往 Python官网 下载最新稳定版安装包。
- 双击运行安装程序,在勾选“Add to PATH”之后点击 Install Now。
macOS/Linux
- 大多数Linux和macOS系统自带Python 3,但建议更新到最新版本。
- 使用终端执行以下命令检查当前版本:
python3 --version
- 如果没有安装,可以使用包管理器进行安装:
- Ubuntu/Debian:
sudo apt update sudo apt install python3 - macOS (Homebrew):
brew install python
- Ubuntu/Debian:
2. 安装pip
pip 是 Python 的包管理工具,我们可以用它来安装 Django。通常新安装的 Python 版本都会自带 pip,你可以通过以下命令确认它是否可用:
pip --version
如果提示 command not found,说明 pip 没有正确安装。此时,可以根据官方文档重新安装 pip,或者尝试以下命令:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
3. 安装Django
现在我们可以通过 pip 来安装 Django。执行如下命令:
pip install django
安装完成后,输入以下命令来确认 Django 是否安装成功以及其版本号:
django-admin --version
如果输出类似 4.2.6 这样的数字,则表示安装成功!
4. 准备开发环境
为了更方便地编写和调试代码,你需要安装一款代码编辑器。以下是一些常用的编辑器推荐:
- Visual Studio Code (VSCode):免费开源,支持丰富的插件扩展,适合初学者。
- PyCharm (Community Edition):专为Python设计,功能强大,社区版免费。
- Sublime Text:轻量快速,适合简单编辑需求。
下载并安装任意一款编辑器后,就可以开始编写你的第一个Django项目了!
5. 创建虚拟环境(可选)
虽然不是必须步骤,但我们强烈建议新手在开发时使用虚拟环境,它可以防止不同项目的依赖冲突。执行以下命令创建一个虚拟环境:
python -m venv env
激活虚拟环境(Windows):
.\env\Scripts\activate
激活虚拟环境(macOS/Linux):
source env/bin/activate
激活后你会看到命令行前多了个 (env) 的提示,这意味着你现在是在独立的环境中工作。后续我们所有的操作都会在这个环境下进行,包括安装Django和其他依赖。
至此,你的Django环境就准备好了!接下来,我们将进入实际的操作阶段。
核心概念:理解Django的三大核心组件 —— MVT模式
Django采用了一种叫做 MVT(Model-View-Template) 的架构模式,这是对经典 MVC(Model-View-Controller) 模式的变体。了解这三者的关系有助于你更好地组织代码结构,避免混乱。
Model:定义数据结构
Model(模型) 负责定义数据结构,也就是我们在数据库中存储的信息。例如,如果你想创建一个博客网站,你就需要一个 Post 模型来表示文章,它可能包含标题、内容、发布时间等信息。
Django 提供了一个内置的 ORM(Object Relational Mapper),允许我们用 Python 代码来操作数据库,而不用直接写 SQL 语句。例如,下面是一个简单的模型示例:
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
pub_date = models.DateTimeField('date published')
def __str__(self):
return self.title
上面的代码创建了一个名为 Post 的数据模型,它包含三个字段:title、content 和 pub_date。models.CharField() 表示字符串类型字段,models.TextField() 是大段文本字段,models.DateTimeField() 用来记录时间。
View:处理请求和返回响应
View(视图) 是负责接收浏览器请求(例如访问 /hello 页面),然后返回相应的 HTML 页面或 JSON 数据的部分。
在 Django 中,视图通常是一个 Python 函数或类,它接收请求对象 (request),然后返回响应对象 (response)。例如,我们可以写一个最简单的视图函数来显示 "Hello World":
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello, world!")
这个函数会被映射到特定的 URL(比如 /hello),当用户访问这个 URL 时,就会看到“Hello, world!”这段文字。
Template:展示页面内容
Template(模板) 负责将数据动态填充到 HTML 页面中。Django 提供了一套模板引擎,让我们可以轻松地把 Python 数据传递给 HTML 文件。
例如,假设我们有一个 index.html 文件,里面的内容如下:
<h1>{{ title }}</h1>
<p>{{ message }}</p>
在视图中,我们可以这样渲染这个模板:
from django.shortcuts import render
def home(request):
context = {
'title': '我的首页',
'message': '欢迎来到我的网站!'
}
return render(request, 'index.html', context)
这里的 context 是一个字典,包含了要传入模板的数据,Django 会自动将其注入到 HTML 文件中,替换掉变量名的位置。
总结
- Model(模型):描述数据结构,负责与数据库打交道。
- View(视图):处理用户的请求,决定返回什么内容。
- Template(模板):负责网页的外观,动态渲染数据。
掌握了这三个核心概念,就能理解 Django 是如何组织一个网站的基本流程了。
实战项目:一步步创建你的第一个Django网站
现在我们来动手实践一下,跟着教程一起创建一个简单的 Django 网站。我们会搭建一个“博客主页”,并在页面上显示几篇文章的标题和内容。整个过程只需不到 10 分钟,你会亲身体验 Django 强大的开发效率。
第一步:创建项目和应用
我们先使用 Django 提供的命令行工具创建一个项目骨架。
打开终端,执行以下命令:
django-admin startproject myblog
cd myblog
这会生成一个名为 myblog 的文件夹,里面有 Django 默认的项目结构:
myblog/
├── manage.py # Django 管理脚本
└── myblog/
├── __init__.py # 包初始化文件
├── settings.py # 配置文件
├── urls.py # URL 路由配置
└── wsgi.py # WSGI 接口配置
接下来,我们要创建一个应用(app)。Django 将不同的功能模块称为“应用”,一个项目可以包含多个应用。我们现在创建一个叫 blog 的应用:
python manage.py startapp blog
此时项目结构变为:
myblog/
├── blog/ # 新建的 blog 应用
│ ├── migrations/
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── manage.py
└── myblog/
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
为了让 Django 认识这个应用,我们需要在 myblog/settings.py 的 INSTALLED_APPS 列表中添加 'blog.apps.BlogConfig'。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog.apps.BlogConfig', # 添加这一行
]
第二步:定义数据模型
打开 blog/models.py,我们来定义一个博客文章模型(Post)。
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
pub_date = models.DateTimeField('date published')
def __str__(self):
return self.title
这段代码定义了博客文章的数据结构,包括标题、内容和发布时间。
现在我们让 Django 根据这个模型创建数据库表:
python manage.py makemigrations blog
python manage.py migrate
执行完后,Django 会在数据库(默认是 SQLite)中生成对应的表格。
第三步:创建视图(View)
接下来我们来写一个视图函数,让它从数据库中读取博客文章并返回给前端页面。
修改 blog/views.py:
from django.shortcuts import render
from .models import Post
def index(request):
posts = Post.objects.all().order_by('-pub_date')[:5]
return render(request, 'blog/index.html', {'posts': posts})
这个视图函数做了三件事:
- 从数据库中获取所有博客文章。
- 按照发布日期倒序排列,并只取前 5 条。
- 将这些文章传递给
blog/index.html模板渲染。
第四步:配置URL路由
为了让用户能访问这个页面,我们需要配置 URL 路由。
打开 myblog/urls.py,添加以下内容:
from django.urls import path
from blog.views import index
urlpatterns = [
path('', index, name='index'),
]
现在,当我们访问网站根路径(如 http://127.0.0.1:8000/)时,Django 就会调用 blog/views.py 中的 index 函数。
第五步:创建模板
Django 使用模板来渲染 HTML 页面。我们需要创建 templates/blog/index.html 文件。
首先在 blog 目录下新建 templates/blog/ 文件夹,并创建 index.html:
mkdir -p blog/templates/blog
touch blog/templates/blog/index.html
然后编辑 blog/templates/blog/index.html,写入以下内容:
<!DOCTYPE html>
<html>
<head>
<title>我的博客</title>
</head>
<body>
<h1>博客文章列表</h1>
{% for post in posts %}
<h2>{{ post.title }}</h2>
<p>{{ post.content|truncatewords:30 }}</p>
{% endfor %}
</body>
</html>
这个模板会遍历我们传进来的 posts 对象,并显示每篇文章的标题和部分内容。
第六步:启动服务器查看效果
一切准备就绪,我们可以运行 Django 内置的服务器,看看我们的博客主页长什么样:
python manage.py runserver
打开浏览器,访问 http://127.0.0.1:8000/,你应该会看到一个空页面——因为我们还没有在数据库里添加任何文章内容。
第七步:添加测试文章(使用 Django Admin)
Django 自带了一个强大的后台管理系统,我们可以用它来添加博客文章。
首先,我们需要创建管理员账号:
python manage.py createsuperuser
输入用户名、邮箱和密码后,登录 Django 管理后台:http://127.0.0.1:8000/admin
为了让博客文章可以在后台编辑,我们还需要注册模型。打开 blog/admin.py,添加以下代码:
from django.contrib import admin
from .models import Post
admin.site.register(Post)
刷新后台页面,你会看到“Posts”选项,点击进去后可以添加新的博客文章。添加几篇文章后,再次访问首页,你就能看到它们正常显示出来了!
常见问题解答:新手容易遇到的几个问题
在使用 Django 的过程中,很多初学者都会遇到一些常见的错误。下面列出几个典型问题及其解决方法,帮助你少走弯路。
Q1:为什么运行 python manage.py runserver 时报错 no such table: blog_post?
这个问题通常发生在你修改了模型之后,但没有执行迁移命令。Django 不会自动更新数据库结构,你需要手动运行以下两个命令来同步模型和数据库:
python manage.py makemigrations
python manage.py migrate
第一条命令会检测模型的变化并生成迁移脚本,第二条命令会真正应用这些更改到数据库。
Q2:页面打开是空白的,没有任何报错怎么办?
有时候 Django 报错但不显示详细信息,是因为调试模式(DEBUG)未开启。打开 myblog/settings.py,将 DEBUG 设置为 True:
DEBUG = True
保存后重启服务器,再次访问页面,这时 Django 会显示具体的错误信息,帮助你更快定位问题。
Q3:为什么访问不了 Admin 后台?
要访问 Django 后台,除了需要正确配置 admin.py 并注册模型外,还要确保你已经创建了超级用户账号:
python manage.py createsuperuser
如果你已经创建过账号但仍无法登录,请检查用户名、密码是否输入正确,浏览器是否会缓存旧登录状态。可以尝试换一个浏览器或无痕模式访问。
Q4:为什么我在模板中无法显示数据?
请检查以下几点:
- 视图函数是否正确传递了上下文参数(context)给模板?
- 模板文件路径是否正确?Django 默认查找
templates/your_app_name/template_name.html。 - 在
settings.py中是否启用了模板目录?Django 默认会自动识别,但如果自定义了模板路径,需要手动配置TEMPLATES_DIR。
例如,如果你把模板放在 blog/templates/ 下,确保路径正确,不要拼错文件夹名称。
这些问题在新手开发过程中很常见,当你熟悉流程后,很快就能熟练应对。
学习建议:下一步该学什么?
恭喜你完成了第一个 Django 网站!这是一个很好的起点。接下来,你可以继续学习以下几个方向,以提升你的 Django 开发能力:
1. 深入学习 Django 模板系统
现在你已经学会了如何渲染一个简单的 HTML 页面,接下来可以探索更高级的模板技巧:
- 使用模板继承(
{% extends %})复用通用布局 - 使用模板标签(如
{% if %},{% for %})控制渲染逻辑 - 使用静态文件(CSS、JavaScript、图片)
- 使用模板过滤器(如
{{ value|lower }})格式化输出内容
2. 学习 Django Form 表单处理
目前的博客只是一个展示页面,接下来你可以尝试让用户提交文章或留言。Django 提供了强大的表单处理机制:
- 学习如何定义
Form类处理用户输入 - 如何在视图中验证和处理提交的数据
- 如何将表单绑定到模板并渲染出来
- 处理文件上传、表单验证错误等常见情况
3. 学习 Django REST Framework(DRF)构建 API
随着前后端分离的发展,很多现代网站会用 Django 提供 RESTful API 给前端或其他服务使用。你可以学习:
- DRF 的基本概念与配置方式
- 如何将模型转换为可访问的 JSON API
- 构建增删改查接口(CRUD)
- 加入身份认证、权限控制等高级功能
4. 学习部署上线
本地开发完成后,你还想让更多人访问你的网站。可以进一步学习如何部署 Django 项目:
- 部署到 Linux 服务器(如 Ubuntu + Nginx + Gunicorn)
- 使用云平台(如 Heroku、AWS、阿里云)部署
- 学习 Django 的生产环境配置技巧(如关闭 DEBUG、设置 ALLOWED_HOSTS)
- 使用
.env管理敏感配置(数据库密码、API密钥等)
5. 实践更多小项目
最好的学习方式是不断动手做项目。你可以尝试构建:
- 博客系统(已做完初步功能,可以增加评论、分页、搜索等功能)
- 个人简历网站(使用静态

评论 0