用 Django 搭建你的第一个 Python 网站,从零开始不踩坑
大家好,我是一名工作五年的后端工程师。这几年带过不少新人,也面试过上百位求职者。我发现一个现象:很多同学对 Web 开发既好奇又害怕,总觉得“网站”两个字背后藏着一堆黑魔法。其实不是的!今天我就用最直白的方式,手把手带你用 Python 的 Django 框架搭出人生第一个网站。
为什么选 Django?
因为它像乐高——官方已经把轮子造好了,你只需要拼装。而且它特别适合初学者:文档全、社区大、自带后台管理。更重要的是,Django 是很多公司(比如 Instagram)的技术栈,学了真能用在产品里,也能应付面试题挑战!
一、准备工作:5 分钟搭好开发环境
我当初学的时候,光装环境就折腾了一整天。别怕,跟着这三步走,稳!
1. 安装 Python(3.8+)
先确认你有没有 Python:
python --version
# 或
python3 --version
如果没有,请去 python.org 下载最新版(建议 3.10+)。安装时务必勾选 “Add to PATH”(Windows 用户特别注意!)。
2. 创建虚拟环境(强烈推荐!)
虚拟环境就像给你的项目建个“隔离房间”,避免包冲突。
# 创建名为 mysite 的虚拟环境
python -m venv mysite
# 激活它(Windows)
mysite\Scripts\activate
# 激活它(Mac/Linux)
source mysite/bin/activate
激活后,命令行前面会出现 (mysite),说明成功了。
3. 安装 Django
在虚拟环境中执行:
pip install django
验证是否安装成功:
django-admin --version
# 如果显示版本号(如 4.2.7),就 OK 了!
💡 小贴士:不要直接用
pip install全局安装 Django!养成用虚拟环境的习惯,以后你会感谢自己。
二、Django 是什么?三个核心概念讲清楚
别被“框架”吓到。Django 本质就是一套帮你快速建网站的工具箱。它基于 MTV 模式(Model-Template-View),你可以理解为:
| 组件 | 作用 | 类比 |
|---|---|---|
| Model | 和数据库打交道 | 产品的“数据仓库” |
| Template | 网页长什么样 | 产品的“UI界面” |
| View | 处理用户请求 | 产品的“业务逻辑” |
举个例子:你想做个待办事项(To-Do)网站。
- Model:定义“任务”有哪些字段(标题、是否完成、创建时间)
- Template:设计一个好看的列表页面
- View:当用户点击“添加任务”,就把数据存进数据库
是不是瞬间清晰了?
三、实战:10 分钟写出你的第一个网站
我们现在要做的,是一个极简的“欢迎页面”。虽然简单,但会涵盖完整流程!
第 1 步:创建 Django 项目
django-admin startproject mysite .
注意末尾有个点
.!这表示在当前目录创建,避免多一层文件夹。
你会看到这些文件:
mysite/
manage.py
mysite/
__init__.py
settings.py ← 配置中心
urls.py ← 路由表
asgi.py
wsgi.ru
第 2 步:启动开发服务器
python manage.py runserver
打开浏览器,访问 http://127.0.0.1:8000 —— 看到火箭图标了吗?恭喜!你的第一个 Django 站点跑起来了!
第 3 步:创建一个 App(应用)
Django 项目由多个 App 组成。比如一个电商网站可能有 user、product、order 等 App。
我们创建一个叫 home 的 App:
python manage.py startapp home
然后告诉 Django:“我有个新 App 叫 home!”
打开 mysite/settings.py,找到 INSTALLED_APPS,加入 'home':
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
# ... 其他默认项
'home', # ← 加这一行
]
第 4 步:写 View(处理请求)
编辑 home/views.py:
from django.http import HttpResponse
def welcome(request):
return HttpResponse("<h1>你好!这是我的第一个 Django 网站!</h1>")
第 5 步:配置 URL 路由
先在 home 目录下新建 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 # ← 别忘了 import include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('home.urls')), # ← 把 home 的路由包含进来
]
现在刷新浏览器,你会看到大大的欢迎语!🎉
四、加点料:做个能存数据的“产品”
光显示文字太无聊了。我们来做一个真正的“产品”雏形:用户留言本!
1. 定义 Model(数据结构)
编辑 home/models.py:
from django.db import models
class Message(models.Model):
content = models.CharField(max_length=200)
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.content[:20] # 方便后台显示
2. 创建并应用数据库迁移
Django 用“迁移”来同步代码和数据库:
# 生成迁移文件
python manage.py makemigrations
# 应用到数据库(默认是 SQLite,无需额外安装)
python manage.py migrate
3. 注册到后台管理(超实用!)
Django 自带超强大的 Admin 后台。只需两步:
① 创建超级管理员账号
python manage.py createsuperuser
# 按提示输入用户名、邮箱、密码
② 在 home/admin.py 中注册模型
from django.contrib import admin
from .models import Message
admin.site.register(Message)
访问 http://127.0.0.1:8000/admin,登录后就能看到 Message 表,还能手动添加数据!
4. 显示留言列表(Template + View)
View 部分(home/views.py):
from django.shortcuts import render
from .models import Message
def message_list(request):
messages = Message.objects.all().order_by('-created_at')
return render(request, 'home/list.html', {'messages': messages})
Template 部分:
先在 home 目录下创建 templates/home/ 文件夹(注意路径!),然后新建 list.html:
<!DOCTYPE html>
<html>
<head>
<title>留言本</title>
</head>
<body>
<h1>所有留言</h1>
{% for msg in messages %}
<p>{{ msg.content }} <small>({{ msg.created_at }})</small></p>
{% endfor %}
</body>
</html>
最后改路由(home/urls.py):
from django.urls import path
from . import views
urlpatterns = [
path('', views.message_list, name='message_list'), # 改成显示列表
]
重启服务器,刷新页面——你的留言本上线了!
🧠 面试题挑战:
“Django 的 ORM 是什么?”
答:ORM(对象关系映射)让你用 Python 代码操作数据库,而不用写 SQL。比如Message.objects.all()实际执行的是SELECT * FROM home_message;。
五、新手常踩的 5 个坑 & 解决方案
| 问题 | 原因 | 解决方法 |
|---|---|---|
| 页面显示 404 | URL 配置错误或没 include | 检查 urls.py 的 include 和 path |
| 数据库没更新 | 忘记运行 migrate |
每次改 models.py 后都要 makemigrations + migrate |
| 模板找不到 | templates 路径不对 | 确保是 app/templates/app/xxx.html 结构 |
| 修改代码不生效 | 开发服务器没自动重载 | 检查终端是否有报错;或手动重启 runserver |
| 中文乱码 | 数据库编码问题 | SQLite 默认支持 UTF-8,一般不会;若用 MySQL 需设 charset=utf8mb4 |
六、下一步怎么学?我的建议
动手做个小项目
比如博客、天气查询、简易论坛。只有做,才能真正理解 MTV 如何协作。对比其他语言框架
你可能会听说 Go 的 Gin、Echo,或者 Python 的 Flask。Django 是“全功能套餐”,Flask 是“自助餐”。面试常问:“为什么选 Django 而不是 Flask?”
答:Django 适合快速交付完整产品,内置认证、Admin、ORM;Flask 更灵活,适合微服务或定制化强的场景。深入核心模块
- 用户认证(
django.contrib.auth) - 表单处理(
forms.py) - 静态文件(CSS/JS 图片)
- 部署上线(用 Gunicorn + Nginx)
- 用户认证(
别忽视基础
Django 再强大,底层还是 HTTP、数据库、Python。建议同时巩固:- Python 面向对象
- RESTful API 设计
- 基础 SQL 语句
最后的话
我当初学 Django 时,也对着文档一脸懵。但只要你迈出第一步——跑通那个“Hello World”页面,后面就会越来越顺。所有复杂的产品,都是从一行代码开始的。
记住:不要追求一次学会所有东西。今天你能显示一个页面,明天就能加数据库,后天就能做用户登录。每天进步一点点,一个月后回头看,你会惊讶于自己的成长。
现在,关掉这篇文章,打开你的终端,敲下 django-admin startproject —— 你的开发者之旅,正式启程!🚀

评论 0