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

如果你是编程新手,听到“Web开发”这个词可能会觉得它离我们很遥远。其实,现代的网页应用背后都有一套复杂的技术来支撑它的运行,而Django就是一个帮助你快速构建动态网页的强大工具。
Django 是一个用 Python 编写的开源 Web 框架(也叫做“框架”)。你可以把它想象成一个积木套装,它已经为我们准备好了许多基础功能,比如数据库管理、用户登录功能、管理员后台等等。有了 Django,我们可以将更多精力集中在实现自己的创意上,而不是从零开始搭建这些复杂的功能。
那么,Django 主要能做些什么呢?以下是一些常见用途:
- 博客网站:展示文章内容,并支持访客留言评论。
- 电商网站:商品展示、购物车和支付功能。
- 社交平台:注册、登录、发布动态或照片等。
- 管理系统:例如企业的员工信息管理、库存管理等。
简单来说,无论你想搭建什么样的网站,Django 都可以为你提供强有力的后端支持。而且最重要的是,它是为 Python 初学者设计的,对新手非常友好。
接下来,我们将一步步从环境搭建开始,到最终完成一个简单的网站项目,带你进入 Django 的世界!
环境准备:详细步骤搭建开发环境

在使用 Django 之前,我们需要准备好开发环境。这就像搭好工作台一样,确保后续的工作能顺利进行。以下是详细的安装步骤:
第一步:安装 Python
Django 是基于 Python 的框架,所以首先需要安装 Python。目前推荐版本是 Python 3.x,因为这是社区主流且持续更新的版本。
Windows 用户:
- 前往 https://www.python.org/downloads/ 下载最新版的 Python 安装程序。
- 打开下载好的安装程序,在安装界面中勾选 Add Python to PATH(非常重要!)。
- 点击 "Install Now" 完成安装。
macOS 用户:
macOS 系统通常自带 Python,但我们建议安装最新的版本:
- 同样访问上述链接下载对应操作系统的安装包。
- 双击安装程序按提示完成安装。
Linux 用户:
以 Ubuntu 为例,可以通过以下命令安装 Python:
sudo apt update
sudo apt install python3
完成后,打开终端或命令行工具,输入以下命令验证是否安装成功:
python --version
如果显示类似 Python 3.10.x 这样的信息,说明安装成功!
第二步:安装 pip(Python 包管理器)
Pip 是 Python 的官方包管理工具,用于安装第三方库(如 Django),大多数新版 Python 已经自带了 pip。检查 pip 是否存在只需输入:
pip --version
如果看到类似 pip x.x.x from ... (python 3.x) 的输出,则表示已安装。
如果未安装,请参考官方文档安装指南:https://pip.pypa.io/en/stable/installation/
第三步:安装 Django
确认好 Python 和 pip 都安装完毕之后,就可以通过 pip 来安装 Django。请执行以下命令:
pip install django
等待片刻,待安装结束后,可以通过以下命令检查是否安装成功:
django-admin --version
正常情况下会返回 Django 的当前版本号,例如 4.1.5。

第四步:选择代码编辑器
写代码当然离不开一个趁手的编辑器。对于初学者而言,推荐以下几款流行的代码编辑器:
- VS Code(Visual Studio Code):轻量级但功能强大,拥有丰富的插件支持。
- PyCharm Community Edition:专为 Python 设计的 IDE(集成开发环境),特别适合新手。
- Sublime Text:简洁易用,速度快。
你可以根据个人喜好选择一款,然后安装好对应的编辑器,这样就能愉快地编写 Django 代码了!
第五步:创建项目文件夹结构
现在我们正式开始 Django 之旅,先为我们的项目创建一个专属的文件夹。打开命令行工具(Windows 使用 CMD 或 PowerShell,Mac/Linux 使用终端),输入以下命令创建一个新的文件夹并进入它:
mkdir my_django_project
cd my_django_project
接下来,我们就可以在这个目录下创建我们的第一个 Django 项目啦!
核心概念:Django的关键概念解析
在正式动手实践之前,让我们先了解一些 Django 中的核心概念。这些概念听起来可能有些抽象,但我们用简单的例子来解释它们。
什么是框架?
框架是一个预先写好的“工具箱”,它提供了一套标准的方式来处理常见的开发任务。Django 就是这样一个框架,它让开发者能够专注于网站的特色功能,而不是花费时间重复造轮子。
举个通俗的例子:如果你想建一栋房子,直接从一块砖开始垒墙显然效率很低。框架就像是预制板+脚手架,让你快速完成基本结构,然后再添加自己的设计。
MVC 架构与 MTV 模式
MVC(Model-View-Controller)是软件工程中的一种经典架构模式,很多框架都遵循这种理念。而在 Django 中,它采用的是类似的 MTV 模式(Model-Template-View):
| 层级 | 作用 | 类比 |
|---|---|---|
| Model(模型) | 负责与数据库交互,存储数据 | 数据表(例如用户信息、商品详情) |
| Template(模板) | 控制页面展示的内容样式 | 页面设计稿(HTML 文件) |
| View(视图) | 处理请求,调用模型并传递数据给模板 | 逻辑处理中心(Python 函数或类) |
换句话说,当你访问一个网页时,View 会告诉 Django 要从 Model 获取哪些数据,然后把数据传给 Template 生成完整的 HTML 页面发送给用户。
URL 配置
URL 是我们在浏览器地址栏输入的那一串字符,比如 http://example.com/about。每个 URL 在 Django 里都需要一个“路由规则”来告诉服务器应该调用哪个函数或页面来处理这个请求。
例如:
from django.urls import path
from . import views
urlpatterns = [
path('about/', views.about_page),
]
这段配置意味着当用户访问 /about/ 地址时,会调用 views.py 文件中的 about_page() 函数来处理请求。
视图(Views)
视图是处理业务逻辑的地方。它接收用户请求(例如点击某个按钮或者打开特定页面),执行相应的处理逻辑(比如查询数据库、计算数值),然后将结果交给模板渲染成 HTML 页面返回给用户。
示例代码:
from django.http import HttpResponse
def hello_world(request):
return HttpResponse("欢迎来到我的网站!")
模板(Templates)
模板决定了网页的外观。Django 提供了一个专门的语言来编写模板,允许你在 HTML 中插入变量和简单的逻辑。模板最终会被渲染成一个完整的网页发送给浏览器。
比如,下面是一个简单的模板文件(index.html):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<h1>{{ welcome_message }}</h1>
</body>
</html>
其中 {{ welcome_message }} 是变量占位符,可以在视图中传入实际值。
模型(Models)
模型是用来描述数据库结构的部分,它定义了你的网站需要用到哪些数据以及它们之间的关系。例如,一个博客系统需要“文章”的数据,每篇文章有标题、作者、正文等内容。
示例模型代码如下:
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
published_date = models.DateTimeField(auto_now_add=True)
这里的 Article 类描述了一种数据结构,Django 会自动将这个类转换成数据库中的表格,并提供相关的增删改查接口。

ORM(对象关系映射)
ORM 是 Django 强大的特性之一。它允许我们通过 Python 对象来操作数据库,而不是直接书写 SQL 语句。这使得代码更加简洁,也能避免一些安全隐患(如 SQL 注入攻击)。
例如,我们可以通过以下方式新增一篇文章:
new_article = Article(title="Hello Django", content="这是我的第一篇文章")
new_article.save()
实战项目:跟着教程一步步完成一个简单网站
现在我们终于迎来了激动人心的实战环节!我们将一步步构建一个简单的 Django 网站——一个个人博客。它会有主页,能展示文章列表,并有一个简单的关于页面。让我们立即开始吧!
第一步:创建项目
还记得我们之前创建的 my_django_project 文件夹吗?现在我们就在这个文件夹内创建一个 Django 项目。
在终端(或命令行)中,执行以下命令:
django-admin startproject blog_project
这会在当前目录下创建一个名为 blog_project 的项目文件夹。
目录结构如下:
blog_project/
├── manage.py
└── blog_project/
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
第二步:启动开发服务器
为了测试是否一切正常,我们可以启动 Django 内置的开发服务器。首先切换到 blog_project 目录:
cd blog_project
然后执行:
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/,你应该能看到“Welcome to Django”页面!
第三步:创建第一个应用
Django 鼓励我们将功能模块化。每一个功能都可以作为一个独立的“应用”。这里我们要创建一个名为 blog_app 的博客应用。
继续在终端中输入以下命令:
python manage.py startapp blog_app
此时你会发现项目目录中多了一个 blog_app 文件夹,里面包含一些默认文件,比如 models.py(模型)、views.py(视图)等。
为了让 Django 认识这个新应用,需要在 blog_project/settings.py 文件中的 INSTALLED_APPS 列表里添加它:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog_app', # 添加这一行
]
第四步:编写视图
现在我们要为网站添加第一个页面——主页。打开 blog_app/views.py 文件,输入以下代码:
from django.http import HttpResponse
def home(request):
return HttpResponse("欢迎来到我的博客!")
接着,需要配置 URL,以便通过浏览器访问这个视图。为此,我们创建一个 urls.py 文件在 blog_app 目录下,添加以下内容:
from django.urls import path
from . import views
urlpatterns = [
path('', views.home), # 空路径代表首页
]
然后打开主项目的 blog_project/urls.py 文件,将新应用的 URL 配置包含进去:
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog_app.urls')), # 包含我们刚创建的 url 配置
]
保存后重启服务器(按 Ctrl+C 关闭再重新运行 runserver),访问 http://127.0.0.1:8000/,你会看到页面显示 “欢迎来到我的博客!”。
第五步:加入模板
接下来我们将主页改成一个真正的网页。首先创建一个 templates 文件夹来存放 HTML 文件。在 blog_app 文件夹中新建一个 templates 文件夹,然后在该文件夹中创建一个 home.html 文件,内容如下:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>我的博客主页</title>
</head>
<body>
<h1>欢迎来到我的博客!</h1>
<p>这是一个简单的博客网站。</p>
</body>
</html>
接着修改 views.py 中的 home 函数:
from django.shortcuts import render
def home(request):
return render(request, 'home.html')
刷新页面,你会看到 HTML 渲染的效果!
第六步:添加一个关于页面
让我们再加一个简单的“关于我”页面,以熟悉整个流程。
首先在 blog_app/templates 文件夹中创建一个新的 HTML 文件 about.html:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>关于我</title>
</head>
<body>
<h1>关于我</h1>
<p>我是这个博客的主人,很高兴见到你!</p>
</body>
</html>
然后在 views.py 中添加新的视图函数:
def about(request):
return render(request, 'about.html')
最后,更新 blog_app/urls.py 文件:
urlpatterns = [
path('', views.home),
path('about/', views.about), # 新增的路径
]
现在访问 http://127.0.0.1:8000/about/,你会看到关于页面的内容!
第七步:美化页面(可选)
你可以尝试为 home.html 添加 CSS 样式,让它看起来更美观。例如:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>我的博客主页</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f9f9f9;
color: #333;
padding: 20px;
}
h1 {
color: #007BFF;
}
</style>
</head>
<body>
<h1>欢迎来到我的博客!</h1>
<p>这是一个简单的博客网站。</p>
</body>
</html>
刷新页面,你会看到颜色和字体的变化。
恭喜你,完成了你的第一个 Django 网站!它虽然很简单,但已经涵盖了 Django 的核心知识:创建项目、添加应用、配置 URL、编写视图、使用模板。下一步,我们将解决一些新手容易遇到的问题。
常见问题:新手常问问题解答
在学习 Django 的过程中,新手常常会遇到各种疑问。这些问题看似小,但如果不清楚答案,很容易影响进度。以下是一些最常见的问题及解决方案:
1. 为什么我访问不了本地服务器?
这个问题通常是由于开发服务器没有正确启动导致的。
可能原因:
- 输入了错误的命令,例如漏掉了
runserver; - 其他程序占用端口 8000,导致冲突;
解决方案:
- 检查是否输入正确的命令:
python manage.py runserver - 如果出现端口被占用的错误,可以换用其他端口,例如:
这时候访问地址变为python manage.py runserver 8080http://127.0.0.1:8080/
2. 修改代码后网页没变化怎么办?
Django 的开发服务器会自动检测代码变动,但在某些情况下,你需要手动重启服务器。
解决办法:
- 按 Ctrl + C 终止当前服务器;
- 再次运行
python manage.py runserver。
3. 怎么查看报错信息?
Django 开发服务器提供了详细的错误页面。当你访问页面出现错误(如 500 错误)时,浏览器会显示具体的报错信息,包括出错的文件和行号。
此外,你也可以在 settings.py 文件中设置 DEBUG = True(默认已经是 True),这样可以看到更清晰的调试信息。
4. 模板文件找不到怎么办?
如果你收到类似 TemplateDoesNotExist 的错误,说明 Django 找不到你指定的模板文件。
检查点:
- 模板文件是否放在正确的目录下,比如
templates/home.html; - 是否遗漏了文件扩展名
.html; - 在
settings.py中是否启用了模板加载器(默认是启用的);
5. URL 无法访问怎么办?
如果你访问某个 URL 时出现“Page not found (404)”错误,可能是 URL 配置不正确。
排查方法:
- 检查
urls.py中的路径是否拼写错误; - 检查是否忘记把应用的 URL 添加到主项目的
urlpatterns; - 确保浏览器地址输入无误,例如
/about/结尾是否有斜杠;
6. 如何查看数据库中的数据?
Django 自带一个强大的命令行工具 shell,可以用于测试模型、查看数据。
运行以下命令进入 shell:
python manage.py shell
假设你定义了一个 Article 模型,可以通过以下方式查看所有文章:
from blog_app.models import Article
articles = Article.objects.all()
print(articles)
7. 怎么查看 Django 的文档?
Django 拥有详尽的官方文档,是解决问题的重要参考资料。访问 https://docs.djangoproject.com/ 即可找到最新版本的英文文档,中文翻译社区资源也逐渐丰富,可搜索“Django 中文文档”

评论 0