Django入门教程:搭建你的第一个Python网站
作者:一位维护过多个开源项目的后端工程师。我写这篇教程,是因为当年自己从零开始学Django时踩过太多坑——文档太抽象、概念太密集、环境配置一团乱。今天,我想用最直白的方式,带你轻松迈出Web开发的第一步。
为什么选择 Django?
在你开始之前,先搞清楚:Django 是什么?
简单说,Django 是一个用 Python 编写的全功能 Web 框架。它能帮你快速搭建网站后台(也就是“服务器端”),处理用户请求、连接数据库、返回网页内容等。它的口号是:“Don’t repeat yourself”(别重复造轮子)——很多常见功能,比如用户登录、管理后台、URL路由,它都帮你做好了。
你可能会问:
“现在不是很多人用 Java 做后端吗?为什么要学 Python 和 Django?”
这是个好问题!确实,Java 在企业级开发中非常流行(比如 Spring Boot 框架),但它学习曲线陡峭、代码量大、配置复杂。而 Django 的优势在于:
- 上手快:几行代码就能跑起一个网站
- 内置功能多:自带管理后台、用户系统、ORM(对象关系映射)
- 适合快速原型开发:创业项目、个人博客、内部工具首选
- 社区活跃:遇到问题,网上有海量解决方案
至于 爬虫(网络数据抓取工具),虽然 Django 本身不是用来写爬虫的,但你完全可以用它展示爬虫抓到的数据!比如你用 requests + BeautifulSoup 抓取天气信息,再用 Django 做个网页展示出来——这就是一个完整的 Web 应用。
第一步:环境准备(手把手教你装)
💡 我当初学的时候,光是装环境就折腾了一整天。别怕,跟着我一步步来。
1. 安装 Python(必须 ≥ 3.8)
打开终端(Mac/Linux)或命令提示符(Windows),输入:
python --version
如果显示 Python 3.x,说明已安装。如果没有,请去 python.org 下载最新版,并务必勾选 “Add to PATH”(Windows 用户特别注意!)。
2. 创建虚拟环境(强烈推荐!)
虚拟环境能隔离项目依赖,避免不同项目之间的包冲突。
# 创建虚拟环境(名字叫 mysite-env)
python -m venv mysite-env
# 激活虚拟环境
# Windows:
mysite-env\Scripts\activate
# Mac/Linux:
source mysite-env/bin/activate
激活后,命令行前面会出现 (mysite-env),表示你现在在这个独立环境中。
3. 安装 Django
在激活的虚拟环境中执行:
pip install django
验证是否安装成功:
django-admin --version
# 应该输出类似 5.0.6 的版本号
✅ 到此,你的开发环境就准备好了!
第二步:理解 Django 的核心概念(用大白话解释)
Django 遵循 MTV 模式(Model-Template-View),你可以把它类比成做菜:
| 角色 | 对应 Django 组件 | 作用 |
|---|---|---|
| 菜谱 | Model(模型) | 定义数据结构(比如“文章”有标题、内容、发布时间) |
| 厨师 | View(视图) | 处理逻辑(比如“当用户访问首页,去数据库找最新文章”) |
| 盘子 | Template(模板) | 网页的 HTML 外观(怎么把数据显示在页面上) |
另外几个关键概念:
- Project(项目):整个网站的容器,包含多个 App。
- App(应用):功能模块,比如“博客”、“用户系统”、“商品管理”。一个项目可以有多个 App。
- URL 路由:告诉 Django “当用户访问
/about时,该调用哪个 View”。
🌟 小贴士:不要一上来就想做大项目!先做一个“显示一句话”的网站,跑通流程最重要。
第三步:实战!创建你的第一个 Django 网站
我们将做一个极简的“欢迎页面”,展示“Hello, Django!”。
步骤 1:创建项目
在终端执行:
django-admin startproject mysite
这会生成一个叫 mysite 的文件夹,结构如下:
mysite/
manage.py # 项目管理脚本(启动、数据库操作等)
mysite/
__init__.py
settings.py # 全局配置(数据库、时区、安装的App等)
urls.py # 项目级 URL 路由
asgi.py / wsgi.py # 部署用,初学可忽略
步骤 2:启动开发服务器
进入项目目录并启动:
cd mysite
python manage.py runserver
看到类似输出:
Starting development server at http://127.0.0.1:8000/
打开浏览器,访问 http://127.0.0.1:8000/ —— 看到火箭图标了吗?恭喜!你的 Django 站点跑起来了!
步骤 3:创建一个 App
项目不能直接写业务逻辑,需要创建 App:
python manage.py startapp hello
现在目录多了 hello/ 文件夹,里面就有我们要写的代码。
步骤 4:注册 App
打开 mysite/settings.py,找到 INSTALLED_APPS,添加 'hello':
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
# ... 其他默认项
'hello', # ← 加这一行
]
步骤 5:编写 View(视图)
编辑 hello/views.py:
from django.http import HttpResponse
def welcome(request):
return HttpResponse("Hello, Django! 这是我的第一个网站!")
这个函数的意思是:当有请求进来,就返回一段文本。
步骤 6:配置 URL 路由
先在 App 内创建路由文件:在 hello/ 目录下新建 urls.py:
from django.urls import path
from . import views
urlpatterns = [
path('', views.welcome, name='welcome'),
]
再把 App 的路由挂到项目主路由:修改 mysite/urls.py:
from django.contrib import admin
from django.urls import path, include # ← 导入 include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('hello.urls')), # ← 包含 hello 的路由
]
步骤 7:刷新浏览器!
回到 http://127.0.0.1:8000/,现在应该看到:
Hello, Django! 这是我的第一个网站!
🎉 恭喜!你已经完成了第一个 Django 网站!
进阶:让网站更“像样”一点(加 HTML 模板)
纯文本太无聊了,我们来加个简单的 HTML 页面。
1. 创建模板目录
在 hello/ 下创建文件夹:
hello/
templates/
hello/
index.html
💡 为什么是
templates/hello/?这是 Django 的约定:App 名作为子目录,避免多个 App 模板名冲突。
2. 编写 HTML 模板
hello/templates/hello/index.html 内容:
<!DOCTYPE html>
<html>
<head>
<title>我的第一个 Django 网站</title>
</head>
<body>
<h1>欢迎来到 Django 世界!</h1>
<p>这里可以展示从爬虫抓来的数据,比如:</p>
<ul>
<li>今日热搜:{{ hot_topic }}</li>
<li>天气:{{ weather }}</li>
</ul>
</body>
</html>
注意 {{ hot_topic }} 和 {{ weather }} —— 这是 Django 模板语言,用来动态插入数据。
3. 修改 View,传递数据
更新 hello/views.py:
from django.shortcuts import render
def welcome(request):
context = {
'hot_topic': 'Django 入门教程',
'weather': '晴,25°C'
}
return render(request, 'hello/index.html', context)
render 函数会自动去找 templates/ 下的模板,并把 context 字典里的数据传进去。
4. 刷新页面!
现在你会看到一个有标题、有列表的网页了!虽然数据是写死的,但结构已经具备了——下一步你就可以接入真实数据,比如数据库或爬虫结果。
常见问题解答(新手避坑指南)
❓ 问题1:为什么运行 runserver 报错 “command not found”?
- 原因:没激活虚拟环境,或者 Django 没装成功。
- 解决:确认
(mysite-env)是否出现在命令行前缀;重新执行pip install django。
❓ 问题2:修改了代码,网页没变化?
- 原因:Django 开发服务器会自动重载,但有时缓存会干扰。
- 解决:手动停止服务器(Ctrl+C),再重新运行
python manage.py runserver。
❓ 问题3:模板找不到(TemplateDoesNotExist)?
- 检查点:
- 模板是否放在
templates/your_app_name/下? settings.py中TEMPLATES配置是否包含'APP_DIRS': True?(默认是开启的,不用改)
- 模板是否放在
❓ 问题4:和 Java 比,Django 性能会不会很差?
- 回答:对于中小型网站,Django 性能完全够用。性能瓶颈通常在数据库或架构设计,而不是语言本身。Instagram、Pinterest 都用 Django 支撑亿级用户。
❓ 问题5:我能用 Django 写爬虫吗?
- 回答:不推荐。Django 是 Web 框架,不是爬虫框架。你应该用
Scrapy或requests + BeautifulSoup写爬虫,然后把数据存入数据库,再用 Django 展示。两者分工明确!
下一步学习建议
你已经迈出了关键一步!接下来,我建议你按这个路径深入:
- 学数据库操作:用 Django ORM 创建模型,存储“文章”、“用户”等数据。
- 做管理后台:Django 自带 admin,只需几行配置就能管理数据。
- 集成真实爬虫:比如每天抓取某网站新闻,存入数据库,用 Django 展示。
- 学前端基础:HTML/CSS/JavaScript,让你的页面不再“裸奔”。
- 部署上线:用 Vercel、Render 或阿里云,让全世界都能访问你的网站。
📌 最后送你一句我常说的话:“先跑起来,再优化。” 不要追求完美代码,先做出能运行的东西,成就感会推着你继续前进。
结语
从零到上线一个网站,其实并没有想象中那么难。Django 的设计哲学就是“让开发者专注业务,而非底层细节”。你不需要懂 HTTP 协议、WSGI、线程池这些底层知识,也能做出可用的产品。
而当你未来面对 Java 项目或高并发系统时,这段 Django 的经验会让你更理解 Web 开发的本质——接收请求、处理逻辑、返回响应。万变不离其宗。
现在,关掉这篇文章,打开你的终端,敲下 django-admin startproject 吧。你的第一个网站,正在等待诞生。
作者注:本文所有代码均经过 Python 3.10 + Django 5.0.6 测试。如遇版本差异,请优先查阅 Django 官方文档。

评论 0