从零开始,用Django搭建你的第一个Python网站
大家好,我是技术团队的培训负责人,过去五年带过上百名应届生入门后端开发。每当看到新人面对“如何写一个网站”这个问题时一脸茫然,我就想起自己当初学的时候——以为网站就是HTML+CSS,结果发现后端才是真正的“厨房”。今天,我决定写一篇真正零基础友好的Django入门教程,手把手带你搭起第一个Python网站。
你可能会问:现在不是有Java、Kimi、RAG、Claude Code这些热门工具吗?为什么还要学Django?
其实,无论你未来想用AI编程(如Claude Code辅助生成代码)、构建知识库系统(如基于RAG架构的问答应用),还是调用大模型接口(比如Kimi开放平台),一个能跑起来的Web服务始终是底层载体。而Django,正是Python生态中最成熟、最“开箱即用”的Web框架。它让你不用从零造轮子,快速验证想法——这正是初学者最需要的。
一、环境准备:5分钟搞定开发环境
1. 安装Python
Django是Python写的,所以先装Python。推荐使用 Python 3.8+(截至2024年最新稳定版兼容性最好)。
- Windows用户:去 python.org 下载安装包,记得勾选“Add to PATH”。
- macOS用户:建议用 Homebrew 安装:
brew install python - Linux用户:一般自带,用
python3 --version检查版本
我当初学的时候,就因为没加PATH,命令行死活找不到python,折腾了半小时。血泪教训!
2. 创建虚拟环境(强烈推荐!)
虚拟环境能隔离项目依赖,避免“这个项目要Django 3,那个项目要Django 4”的冲突。
# 创建虚拟环境(名字叫 myenv)
python -m venv myenv
# 激活虚拟环境
# Windows:
myenv\Scripts\activate
# macOS/Linux:
source myenv/bin/activate
激活后,命令行前缀会变成 (myenv),说明成功了。
3. 安装Django
在虚拟环境中执行:
pip install django
验证是否安装成功:
django-admin --version
# 应输出类似 4.2.7 的版本号
二、核心概念:Django到底是什么?
很多新手一上来就被“MTV模式”“ORM”“路由”这些词吓到。别怕,我用最直白的话解释:
| 概念 | 通俗解释 | 类比 |
|---|---|---|
| Project(项目) | 一个完整的网站工程,包含多个App | 整个餐厅 |
| App(应用) | 网站的一个功能模块,比如博客、用户系统 | 餐厅里的厨房、收银台 |
| View(视图) | 处理用户请求并返回响应的函数或类 | 厨师,接到订单后做菜 |
| Template(模板) | HTML页面,可嵌入动态数据 | 菜单+盘子,展示菜品 |
| Model(模型) | 定义数据结构,对应数据库表 | 食材清单,记录有什么菜 |
| URLconf(路由) | 把URL路径映射到具体View | 接待员,把客人带到对应座位 |
注意:Django用的是 MTV(Model-Template-View),不是MVC。但本质一样,只是名字不同。
三、实战:一步步搭建“Hello World”网站
步骤1:创建Django项目
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,你会看到经典的 “The install worked successfully!” 页面。恭喜!你的第一个Django站点已运行。
步骤3:创建一个App(比如叫“pages”)
python manage.py startapp pages
新生成的 pages/ 目录包含:
views.py:写处理逻辑models.py:定义数据(本次不用)apps.py:App配置
步骤4:写一个简单的View
编辑 pages/views.py:
from django.http import HttpResponse
def home(request):
return HttpResponse("Hello, Django! 这是我的第一个网页!")
步骤5:配置URL路由
Django的路由是分层的。先在 pages/ 目录下新建 urls.py:
# pages/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home'),
]
然后在主项目 mysite/urls.py 中引入:
# mysite/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('pages.urls')), # 新增这一行
]
步骤6:注册App
Django需要知道你创建了新App。打开 mysite/settings.py,找到 INSTALLED_APPS,加入 'pages':
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
# ... 其他默认项
'pages', # ← 加在这里
]
步骤7:刷新页面
回到浏览器刷新 http://127.0.0.1:8000,现在显示的是你自定义的“Hello, Django!”。
✅ 小成就达成:你已经完成了从0到1的闭环!
四、进阶:用模板渲染动态页面
硬编码HTML在 HttpResponse 里显然不现实。我们用Django的模板系统。
1. 创建模板目录
在 pages/ 下新建文件夹:
pages/
templates/
pages/
home.html
为什么嵌套两层?这是Django的最佳实践,避免不同App的模板重名。
2. 编写模板
pages/templates/pages/home.html:
<!DOCTYPE html>
<html>
<head>
<title>我的第一个Django网站</title>
</head>
<body>
<h1>欢迎来到 {{ site_name }}!</h1>
<p>当前时间:{{ current_time }}</p>
</body>
</html>
3. 修改View传递数据
更新 pages/views.py:
from django.shortcuts import render
from datetime import datetime
def home(request):
context = {
'site_name': 'Django新手村',
'current_time': datetime.now().strftime("%Y-%m-%d %H:%M:%S")
}
return render(request, 'pages/home.html', context)
render() 是Django的快捷函数,自动加载模板并注入上下文数据。
4. 刷新页面
现在页面会动态显示网站名和当前时间!
五、常见问题与避坑指南
❓ 问题1:修改代码后页面没变化?
原因:Django开发服务器默认会自动重载,但有时会卡住。
解决:手动重启 python manage.py runserver
❓ 问题2:提示“TemplateDoesNotExist”?
原因:模板路径不对,或没在 INSTALLED_APPS 注册App。
检查点:
- 模板是否在
templates/pages/下? settings.py是否包含'pages'?
❓ 问题3:中文显示乱码?
原因:HTML没指定编码。
解决:在 <head> 中加入:
<meta charset="UTF-8">
❓ 问题4:和Java比,Django有什么优势?
| 对比项 | Java (Spring Boot) | Django (Python) |
|---|---|---|
| 学习曲线 | 陡峭(需理解OOP、注解、依赖注入等) | 平缓(语法简洁,约定优于配置) |
| 开发速度 | 较慢(编译、类型声明) | 极快(解释执行,动态类型) |
| 适合场景 | 大型企业级系统 | 快速原型、中小型Web应用、AI集成 |
我带过的应届生中,用Django两周就能做出完整CRUD应用,而Java可能还在配Maven。
❓ 问题5:Kimi、Claude Code能帮我写Django吗?
当然可以!但要注意:
- Claude Code 或 Kimi 这类AI工具能生成基础代码,比如“创建一个博客App”,但无法替代你理解流程。
- 最佳实践:先手写一遍,再用AI优化或生成重复代码。
- 警惕:AI可能生成过时的Django语法(如旧版URL配置)。
举个例子:你可以问Claude:“用Django 4.2写一个显示用户列表的View,用Class-Based View”,它会给出合理代码。但如果你连什么是View都不知道,AI只会让你更困惑。
六、下一步学习建议
完成这个“Hello World”后,你已经跨过了最难的第一步。接下来,我建议按以下路径深入:
- 学数据库操作:用Django ORM创建
BlogPost模型,实现增删改查(CRUD) - 掌握Admin后台:Django自带超强大的管理界面,一行代码启用
- 理解Form表单:处理用户输入,比如留言、登录
- 部署上线:用免费平台如Render或Vercel(支持Django)发布你的网站
- 探索高级主题:用户认证、REST API(配合DRF)、缓存、异步任务
⚠️ 避坑提醒:不要一上来就学“微服务”“Docker部署”“JWT鉴权”——那是进阶内容。先把基础打牢,否则容易半途而废。
结语:你的Web开发之旅,从此开始
我当初学的时候,花了三天才搞懂Django的路由怎么配。但现在,借助清晰的文档和现代工具(甚至AI辅助),你可以在一天内跑通全流程。技术在变,但动手实践永远是学习编程的不二法门。
记住:每一个复杂的系统,都是从 Hello World 开始的。你刚刚迈出的这一步,可能就是未来你开发AI驱动网站(比如集成RAG知识库查询)的起点。
现在,关掉这篇文章,打开你的终端,敲下 django-admin startproject —— 你的第一个网站,正在等待诞生。
附:常用命令速查表
| 命令 | 作用 |
|---|---|
django-admin startproject xxx |
创建新项目 |
python manage.py startapp xxx |
创建新App |
python manage.py runserver |
启动开发服务器 |
python manage.py makemigrations |
生成数据库迁移文件 |
python manage.py migrate |
执行数据库迁移 |
python manage.py createsuperuser |
创建管理员账号 |
祝你编码愉快,少些Bug,多些成就感!

评论 0