从零开始用Django搭建你的第一个Python网站
大家好,我是开源社区的一名老维护者,写过不少技术文档,也带过很多初学者入门后端开发。今天这篇教程,源于我当初学 Django 时踩过的坑——文档太抽象、概念太密集、环境配置就卡住半天。所以,我想写一篇真正“手把手”的入门指南,哪怕你连 Python 都没跑过,也能跟着做出一个能访问的网站。
很多人以为 Web 开发很神秘,其实它就像搭积木:框架是底座,代码是积木块,浏览器是展示台。而 Django,就是 Python 生态里最稳、最全、最适合新手的那块底座。
顺便说一句,虽然本文标题提到了“爬虫”“面试题”“代码人生”,但别担心,我们不会跑偏。Django 本身不是爬虫工具(那是 Scrapy 的主场),但理解 Web 原理对写爬虫大有帮助;面试常问 Django 原理;而“代码人生”嘛——当你亲手让一个网页在浏览器里跑起来,那种成就感,就是程序员的第一口甜头。
为什么选 Django?它到底能做什么?
Django 是一个用 Python 编写的高级 Web 框架,它的口号是:“Don’t repeat yourself”(不要重复造轮子)。它内置了用户认证、数据库管理、后台管理、URL 路由等几乎所有 Web 开发需要的功能。
你可以用它做:
- 博客系统
- 电商网站
- 内部管理系统
- API 后端服务
- 甚至结合爬虫数据做可视化展示平台(比如把爬到的新闻存进 Django 数据库,再用网页展示)
我当初学的时候,第一反应是:“这不就是 PHP + MySQL 的 Python 版?” 其实远不止如此——Django 的 ORM 让你不用写一行 SQL 就能操作数据库,Admin 后台自动生成,安全机制默认开启……这些对新手极其友好。
第一步:搭建开发环境(耐心点,这步最关键)
1. 安装 Python(3.8+ 推荐)
去 python.org 下载最新版 Python(建议 3.8 到 3.12 之间)。安装时务必勾选 “Add to PATH”!
验证安装:
python --version
# 或
python3 --version
如果显示版本号(如 Python 3.11.5),说明成功。
2. 创建虚拟环境(强烈推荐!)
虚拟环境能隔离项目依赖,避免“我电脑上能跑,你电脑上不行”的经典问题。
# 创建名为 mysite 的虚拟环境
python -m venv mysite
# 激活虚拟环境(Windows)
mysite\Scripts\activate
# 激活虚拟环境(macOS/Linux)
source mysite/bin/activate
激活后,命令行前会多出 (mysite) 字样,表示你已进入该环境。
3. 安装 Django
在激活的虚拟环境中执行:
pip install django
验证安装:
django-admin --version
# 输出类似 4.2.7
💡 避坑指南:不要全局安装 Django!每个项目都应有自己的虚拟环境。我见过太多新手因为全局安装导致版本冲突,最后重装系统……
核心概念:Django 的五大支柱
Django 遵循 MTV 模式(Model-Template-View),和 MVC 类似,但 View 在 Django 里其实是 Controller。
| 组件 | 作用 | 类比 |
|---|---|---|
| Model | 定义数据结构(对应数据库表) | 数据的“骨架” |
| Template | 网页的 HTML 模板 | 页面的“皮肤” |
| View | 处理业务逻辑,返回响应 | 大脑,决定怎么处理 |
| URLconf | 路由,把 URL 映射到 View | 导航地图 |
| Admin | 自动生成的后台管理系统 | 管理员控制台 |
下面用一个比喻帮你理解:
假设你要开一家奶茶店:
- Model 是菜单(珍珠、椰果、糖度选项)
- Template 是杯子和包装(外观)
- View 是店员(接收订单、调制奶茶)
- URLconf 是门口的招牌(“扫码点单→View”,“堂食→另一个View”)
- Admin 是老板的后台(查看销量、改价格)
实战:创建你的第一个 Django 网站
我们将做一个极简的“欢迎页面”网站,但它包含了 Django 的完整骨架。
步骤 1:创建项目
django-admin startproject mysite .
注意末尾的 .,表示在当前目录创建,避免多一层文件夹。
项目结构如下:
mysite/
├── manage.py # 命令行工具入口
└── mysite/ # 项目配置包
├── __init__.py
├── settings.py # 全局配置
├── urls.py # 主路由文件
└── wsgi.py # 部署用
步骤 2:启动开发服务器
python manage.py runserver
看到输出:
Starting development server at http://127.0.0.1:8000/
打开浏览器,访问 http://127.0.0.1:8000/,你会看到火箭图标 —— 恭喜!Django 已运行。
🛑 常见问题:如果报错“端口被占用”,加参数换端口:
python manage.py runserver 8080
步骤 3:创建一个应用(App)
Django 项目由多个“应用”组成。比如博客项目可能有 blog、user、comment 等应用。
python manage.py startapp hello
现在目录多了一个 hello/ 文件夹。
步骤 4:注册应用
编辑 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("<h1>你好,Django!</h1><p>这是我的第一个网页</p>")
步骤 6:配置 URL 路由
先在 hello/ 目录下创建 urls.py:
from django.urls import path
from . import views
urlpatterns = [
path('', views.welcome, name='welcome'),
]
然后修改主路由 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:重启服务器,刷新页面
你应该看到自己写的 HTML 内容了!🎉
✅ 恭喜你! 这 7 步就是 Django 开发的核心循环:写 View → 配 URL → 返回响应。
加点料:用 Template 做真正的网页
硬编码 HTML 不优雅。Django 的模板系统让你分离逻辑和界面。
1. 创建模板目录
在 hello/ 下新建文件夹:
hello/
└── templates/
└── hello/
└── welcome.html
💡 为什么是
templates/hello/welcome.html?
Django 默认会在每个应用的templates/下找模板,加上hello/子目录是为了避免不同应用模板重名。
2. 编写模板文件
hello/templates/hello/welcome.html:
<!DOCTYPE html>
<html>
<head>
<title>我的第一个 Django 网站</title>
</head>
<body>
<h1>你好,{{ name }}!</h1>
<p>欢迎来到代码人生的第一站。</p>
</body>
</html>
3. 修改 View 使用模板
hello/views.py:
from django.shortcuts import render
def welcome(request):
context = {'name': '开发者'}
return render(request, 'hello/welcome.html', context)
render 函数会自动查找模板,并把 context 中的数据传进去。{{ name }} 就会被替换成 "开发者"。
刷新页面,效果一样,但代码更清晰了!
顺手体验 Admin 后台(Django 的王牌功能)
Django 自带一个超强大的后台,几行代码就能管理数据。
1. 创建超级用户
python manage.py createsuperuser
按提示输入用户名、邮箱、密码(密码输入时不会显示,正常输入回车即可)。
2. 访问后台
启动服务器后,访问 http://127.0.0.1:8000/admin/,用刚才的账号登录。
你会看到一个简洁的管理界面!虽然现在空空如也,但只要定义 Model,它就会自动生成增删改查界面。
这就是“综合”能力的体现——Django 把数据库、后台、权限、表单验证全包了,你专注业务就行。
新手高频问题解答
| 问题 | 原因 | 解决方案 |
|---|---|---|
ModuleNotFoundError: No module named 'django' |
没激活虚拟环境 | 执行 source mysite/bin/activate(Linux/macOS)或 mysite\Scripts\activate(Windows) |
| 页面显示 404 | URL 配置错误 | 检查 urls.py 是否正确 include,路径是否匹配 |
| 修改代码后页面没变 | 开发服务器未自动重载 | 确保用 runserver 启动(不是直接 python mysite/wsgi.py) |
| 中文乱码 | 模板未指定编码 | 在 HTML <head> 中加 <meta charset="utf-8"> |
| 想用数据库但不会写 SQL | 忘记用 ORM | 用 models.py 定义类,Django 自动生成表 |
和“爬虫”“面试题”“代码人生”的联系
你可能会问:这和爬虫有什么关系?
- 爬虫通常负责采集数据,而 Django 负责展示和管理数据。比如你用 Scrapy 爬了 10 万条商品信息,存入数据库,再用 Django 做个商品搜索网站——这就是典型组合。
- 很多公司面试后端岗会问:“Django 的请求生命周期是怎样的?”、“ORM 如何防止 SQL 注入?”——理解本文的 MTV 流程,你就答对了一半。
- 代码人生不是鸡汤。当你能用代码把想法变成可交互的产品,你就拥有了“创造数字世界”的能力。而 Django,正是通往这个世界的钥匙之一。
我当初学的时候,第一个项目就是爬豆瓣电影 Top250,存进 Django,做个电影推荐页。虽然简陋,但朋友能通过链接看到,那种感觉——值了。
下一步学习建议
完成本教程后,你可以:
- 深入 Model:学习如何定义字段、建立关系(一对多、多对多)、使用 ORM 查询。
- 玩转 Admin:自定义后台列表页、筛选器、表单验证。
- 添加静态文件:引入 CSS/JS,让页面不再“素颜”。
- 做个小项目:比如个人博客(文章、分类、评论)。
- 部署上线:用免费平台(如 Render、Vercel + Deta)让你的网站公网可访问。
🔥 终极建议:不要只看教程!立刻动手改代码——改文字、加按钮、尝试报错。编程不是“看会的”,是“做会的”。
结语
这篇教程花了我不少心思,只为让你少走我当年的弯路。Django 的魅力在于:它既能让新手快速出成果,又能让高手构建复杂系统。你现在的“Hello World”,可能就是未来百万用户产品的起点。
记住:每一个伟大的网站,都始于一个 runserver。
现在,关掉这篇文章,打开你的终端——敲下 django-admin startproject,开始你的代码人生吧。
附:常用命令速查表
| 命令 | 作用 |
|---|---|
django-admin startproject xxx |
创建新项目 |
python manage.py startapp xxx |
创建新应用 |
python manage.py runserver |
启动开发服务器 |
python manage.py makemigrations |
生成数据库迁移文件 |
python manage.py migrate |
应用数据库变更 |
python manage.py createsuperuser |
创建管理员账户 |
祝你编码愉快,bug 少少!

评论 0