Django入门教程:搭建你的第一个Python网站
大家好,我是你们的技术UP主小D。在B站做后端开发教学已经快两年了,经常收到私信问:“我想学Web开发,从哪开始?”、“Django难不难?”、“零基础能学会吗?”
我的答案永远是:能!而且应该从Django开始。
为什么?因为我在大厂做后端开发三年,也带过不少实习生。我发现,很多同学一上来就去啃Flask、FastAPI,结果连“什么是路由”、“为什么需要模板”都没搞明白,就被复杂的配置劝退了。而Django就像一位耐心的老师——它把Web开发中最核心的概念都封装好了,你只需要跟着它的节奏走,就能快速做出一个真正能跑的网站。
更重要的是,Django是面试高频考点。我面过几十个应届生,只要简历写了“熟悉Django”,90%都会被问到“Django的MTV架构是什么?”、“中间件怎么用?”这类问题。
所以今天,我就手把手带你搭建人生第一个Python网站。全程零基础友好,代码一行一行写,概念一个一个讲。准备好了吗?Let’s go!
一、Django 是什么?能用来做什么?
简单说:Django 是一个用 Python 写的 Web 框架。
你可以把它想象成一套“建房子的工具箱”:
- 它自带锤子(数据库操作)
- 自带锯子(用户认证)
- 自带图纸(项目结构)
- 甚至还有装修师傅(Admin后台)
你不需要从零造轮子,只需要告诉它“我要建一个博客”、“我要做一个电商”,它就能帮你快速搭出骨架。
我当初学的时候,第一周就做出了一个带登录、发帖、评论功能的小论坛——这在其他语言里可能要一个月。
Django 特别适合:
- 快速原型开发
- 内容管理系统(CMS)
- 后台管理平台
- 中小型Web应用
二、环境准备:5分钟搞定开发环境
第一步:安装 Python
确保你电脑上有 Python 3.8+。打开终端(Mac/Linux)或命令提示符(Windows),输入:
python --version
# 或
python3 --version
如果没安装,请去 python.org 下载最新版。记得勾选 “Add to PATH”!
第二步:创建虚拟环境(强烈推荐!)
虚拟环境就像一个“独立沙盒”,避免不同项目的依赖冲突。
# 创建虚拟环境(名字叫 mysite_env)
python -m venv mysite_env
# 激活虚拟环境
# Windows:
mysite_env\Scripts\activate
# Mac/Linux:
source mysite_env/bin/activate
激活后,命令行前面会多一个 (mysite_env),说明成功了。
第三步:安装 Django
在虚拟环境中执行:
pip install django
验证是否安装成功:
django-admin --version
# 输出类似:4.2.7
⚠️ 避坑指南:不要全局安装 Django!一定要用虚拟环境。我见过太多人因为没用虚拟环境,导致项目依赖混乱,最后重装系统……
三、核心概念:用最简单的语言解释 MTV
Django 遵循 MTV 架构(Model-Template-View),这是新手最容易懵的地方。别怕,我用“点外卖”来比喻:
| 角色 | 对应组件 | 作用 |
|---|---|---|
| 你(用户) | 浏览器 | 发起请求:“我要一份宫保鸡丁” |
| 外卖App | View(视图) | 接收请求,决定“去哪家店下单” |
| 餐厅厨房 | Model(模型) | 负责做菜(操作数据库) |
| 菜品照片 | Template(模板) | 展示给用户看的页面 |
所以:
- Model:定义数据结构(比如“文章”有标题、内容、作者)
- Template:HTML 页面,负责展示
- View:处理逻辑,比如“当用户访问首页时,去数据库查10篇文章,然后交给模板显示”
我当初学的时候,死记硬背“MVC vs MTV”,结果越学越晕。后来发现:不用纠结名字,只要知道谁负责什么就行。
四、实战:搭建你的第一个网站(投票应用)
我们将做一个超简单的“投票系统”:用户可以看到问题列表,点击进入详情页投票。
步骤1:创建项目
django-admin startproject mysite
cd mysite
目录结构如下:
mysite/
manage.py # 项目管理脚本
mysite/ # 项目配置文件夹
__init__.py
settings.py # 核心配置(数据库、时区等)
urls.py # 总路由
asgi.py
wsgi.py
步骤2:启动开发服务器
python manage.py runserver
打开浏览器,访问 http://127.0.0.1:8000,看到火箭🚀页面,恭喜!你的网站跑起来了!
✅ 小技巧:按
Ctrl+C停止服务器。开发时修改代码,服务器会自动重启(除非改了urls.py或settings.py)。
步骤3:创建一个 App
Django 项目由多个 App 组成(比如 blog、shop、user)。每个 App 负责一个功能模块。
python manage.py startapp polls
现在目录多了 polls/ 文件夹。
💡 面试题预警:Django 中 Project 和 App 的区别是什么?
答:Project 是整个网站,App 是其中的一个功能模块。一个 Project 可以包含多个 App。
步骤4:定义 Model(数据模型)
编辑 polls/models.py:
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
解释:
Question表示一个问题Choice表示选项,通过ForeignKey关联到 Questionon_delete=models.CASCADE:如果问题被删,选项也一起删
步骤5:激活 Model(创建数据库表)
Django 用 迁移(Migration) 来同步模型和数据库。
# 生成迁移文件
python manage.py makemigrations polls
# 执行迁移(创建表)
python manage.py migrate
🛠️ 工具提示:
makemigrations只是生成 SQL 脚本,migrate才真正执行。
步骤6:注册 App 到项目
编辑 mysite/settings.py,在 INSTALLED_APPS 中添加 'polls':
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
# ... 其他默认项
'polls', # ← 加这一行
]
步骤7:创建视图(View)
编辑 polls/views.py,写一个简单视图:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
步骤8:配置 URL 路由
先在 polls/ 目录下新建 urls.py:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
再修改项目总路由 mysite/urls.py:
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')), # ← 新增
path('admin/', admin.site.urls),
]
现在访问 http://127.0.0.1:8000/polls/,就能看到 "Hello, world..." 了!
🔁 路由流程:
用户访问/polls/→ 项目 urls.py 匹配到include('polls.urls')→ 转发到 polls/urls.py → 调用 views.index
五、常见问题 & 解决方案
❌ 问题1:ImportError: No module named 'polls'
原因:忘记在 settings.py 的 INSTALLED_APPS 中注册 App。
解决:检查是否添加了 'polls'。
❌ 问题2:页面报 404
原因:URL 配置错误,或者路径拼写不对。
解决:
- 检查
polls/urls.py中的path - 检查项目
urls.py中是否include了 polls - 确保访问的是
/polls/而不是/poll/
❌ 问题3:修改模型后页面没变化
原因:只改了 models.py,但没执行迁移。
解决:
python manage.py makemigrations
python manage.py migrate
💡 小知识:Django 默认使用 SQLite 数据库(轻量,适合开发),生产环境建议换 PostgreSQL 或 MySQL。
❌ 问题4:中文乱码 / 时区不对
解决:修改 mysite/settings.py:
# 语言 & 时区
LANGUAGE_CODE = 'zh-hans' # 中文
TIME_ZONE = 'Asia/Shanghai' # 上海时间
USE_I18N = True
USE_TZ = False # 开发时可设为 False,避免时区问题
六、学习建议 & 下一步
恭喜你!你已经完成了 Django 的第一个里程碑。但这只是开始,接下来你可以:
✅ 必学进阶内容
| 主题 | 为什么重要 | 面试频率 |
|---|---|---|
| Django Admin | 快速搭建后台管理系统 | ⭐⭐⭐⭐ |
| 模板继承(Template Inheritance) | 避免重复写 HTML | ⭐⭐⭐ |
| 表单处理(Forms) | 处理用户输入 | ⭐⭐⭐⭐ |
| 用户认证(Auth) | 登录/注册功能 | ⭐⭐⭐⭐⭐ |
| REST API(配合 DRF) | 前后端分离必备 | ⭐⭐⭐⭐ |
📚 推荐学习路径
- 官方教程 Part 1-7(djangoproject.com)
- 动手做一个博客系统(带分类、标签、评论)
- 学习 Django REST Framework(DRF),做 API 接口
- 部署到云服务器(如阿里云、Vercel)
💬 最后送你一句我常说的话:
“不要试图一次性学会所有东西。先跑起来,再优化。”
Django 的魅力在于:哪怕你只懂 20% 的功能,也能做出 80% 的网站。剩下的,边做边学。
如果你觉得这篇教程有帮助,欢迎关注我在 B 站的频道「小D后端研究所」,我会持续更新 Django 实战系列(包括部署、性能优化、面试真题解析)。下期预告:《Django Admin 高级技巧:让后台管理效率翻倍》。
有问题可以在评论区留言,我会一一回复。我们下期见!

评论 0