Django入门教程:搭建你的第一个Python网站
大家好!我是一个从文科生自学转码成功的后端工程师。当初学编程时,最头疼的就是那些术语堆砌、代码满屏却不知其所以然的教程。今天,我就用自己踩过的坑、走过的弯路,手把手带你用 Django 搭建人生第一个 Python 网站——不用懂数据库、不用会前端,只要你会打字,就能跟着做完!
💡 为什么写这篇教程?
因为我当初学的时候,看到“MTV架构”、“ORM”、“视图函数”这些词差点放弃。后来发现,其实只要有一个小项目带着跑一遍,一切就豁然开朗了。
一、Django 是什么?能用来做什么?
简单说:Django 是一个用 Python 写的“网站搭建工具包”。它帮你把建网站时重复的工作(比如用户登录、数据存储、页面跳转)都封装好了,你只需要专注“我要做什么功能”。
- 想做个博客?Django 行。
- 想做个电商后台?Django 行。
- 甚至想做个能爬取网页内容的小工具?Django 也能整合进去!
📌 注意:Django 是 后端框架,负责处理数据、逻辑和服务器响应。它和前端(HTML/CSS/JavaScript)配合工作,但你不需要一开始就精通前端。
二、环境准备:5 分钟搭好开发环境
我们用最简单的方式开始。假设你已经安装了 Python(3.7+)。如果没有,请先去 python.org 下载安装。
步骤 1:创建虚拟环境(强烈推荐!)
虚拟环境就像一个“独立沙盒”,避免你的项目依赖和其他程序冲突。
# 创建一个叫 mysite 的文件夹
mkdir mysite
cd mysite
# 创建虚拟环境(Windows 和 Mac/Linux 命令略有不同)
# Windows:
python -m venv venv
# Mac/Linux:
python3 -m venv venv
# 激活虚拟环境
# Windows:
venv\Scripts\activate
# Mac/Linux:
source venv/bin/activate
激活后,命令行前面会出现 (venv),说明你已在虚拟环境中。
步骤 2:安装 Django
pip install django
安装完成后,验证是否成功:
django-admin --version
# 输出类似:4.2.7(版本号可能不同)
✅ 恭喜!你的开发环境已就绪。
三、核心概念:用大白话讲清楚 Django 的“骨架”
Django 遵循 MTV 架构(Model-Template-View),别被名字吓到,其实就是三个角色:
| 角色 | 作用 | 类比 |
|---|---|---|
| Model(模型) | 负责和数据库打交道,定义数据长什么样 | 就像 Excel 表格的表头(姓名、年龄、邮箱) |
| Template(模板) | 负责网页长什么样(HTML) | 就像 Word 文档的排版 |
| gpt | ||
| View(视图) | 负责处理逻辑:用户点击后要干嘛?数据怎么拿? | 就像客服:接收请求,查资料,返回结果 |
💬 我当初学的时候,总把 View 当成“页面”,其实它是“逻辑处理者”。页面是 Template!
四、实战项目:做一个“今日名言”网站
我们要做一个超简单的网站:打开网页,随机显示一条名人名言。
第 1 步:创建 Django 项目
在 mysite 文件夹下运行:
django-admin startproject quotesite .
注意最后有个 .,表示在当前目录创建项目,而不是新建子文件夹。
你会看到如下结构:
mysite/
├── manage.py
└── quotesite/
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
manage.py:Django 的“遥控器”,所有命令都靠它。settings.py:项目的配置中心(比如数据库、时区、应用列表)。
第 2 步:启动开发服务器
python manage.py runserver
打开浏览器,访问 http://127.0.0.1:8000,你会看到 Django 的欢迎页面!🎉
🔥 新手常见问题:如果提示端口被占用,可以换端口:
python manage.py runserver 8080
第 3 步:创建一个“应用”(App)
Django 项目由多个 App 组成(比如用户系统、博客、商品管理)。我们的名言网站就是一个 App。
python manage.py startapp quotes
现在项目结构变成:
mysite/
├── manage.py
├── quotes/ ← 新增的 App
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
└── quotesite/
└── ...
第 4 步:注册 App 到项目
打开 quotesite/settings.py,找到 INSTALLED_APPS,加入 'quotes':
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
# ... 其他默认项
'quotes', # ← 加这一行
]
第 5 步:写视图(View)——处理用户请求
打开 quotes/views.py,写一个函数:
# quotes/views.py
from django.http import HttpResponse
import random
def quote_view(request):
quotes_list = [
"人生苦短,我用 Python。—— Bruce Eckel",
"不要重复造轮子。—— 开源精神",
"代码即文档。—— Python 之禅"
]
selected = random.choice(quotes_list)
return HttpResponse(f"<h1>今日名言</h1><p>{selected}</p>")
这个函数:
- 接收用户的请求(
request) - 随机选一句名言
- 返回一个 HTML 字符串作为响应
第 6 步:配置 URL 路由
用户访问 /quote 时,应该触发 quote_view。我们需要告诉 Django 这个映射关系。
首先,在 quotes 文件夹下新建 urls.py:
# quotes/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.quote_view, name='quote'),
]
然后,在主项目 quotesite/urls.py 中包含这个路由:
# quotesite/urls.py
from django.contrib import admin
from django.urls import path, include # ← 注意导入 include
urlpatterns = [
path('admin/', admin.site.urls),
path('quote/', include('quotes.urls')), # ← 加这一行
]
现在,访问 http://127.0.0.1:8000/quote/,就能看到随机名言了!🔄 刷新几次,内容会变。
五、进阶:加入一点“爬虫”元素(可选)
你说关键词里有 爬虫?那我们就加点料!
假设我们不想手动维护名言列表,而是从某个网页自动抓取。
⚠️ 注意:爬虫需遵守网站
robots.txt和版权规则,仅用于学习!
我们用 Python 内置的 urllib(无需额外安装)简单演示:
# quotes/views.py(修改版)
import urllib.request
import re
from django.http import HttpResponse
def fetch_quote_from_web():
try:
# 模拟从某个公开 API 获取(这里用假数据演示)
# 实际中可用 requests + BeautifulSoup,但为简化用内置库
fake_data = "天行健,君子以自强不息。——《周易》"
return fake_data
except:
return "网络错误,请稍后再试。"
def quote_view(request):
quote = fetch_quote_from_web()
return HttpResponse(f"<h1>今日名言(来自网络)</h1><p>{quote}</p>")
💡 真实爬虫会用
requests和BeautifulSoup,但 Django 本身不负责爬虫,它只是“展示”爬到的数据。爬虫逻辑可以放在 View 里,也可以单独写脚本定时运行。
六、前端交互:加点 JavaScript(超简单)
虽然 Django 是后端,但我们可以嵌入一点 JavaScript 让页面更酷。
修改 views.py,返回带 JS 的 HTML:
def quote_view(request):
quotes_list = [
"人生苦短,我用 Python。",
"不要重复造轮子。",
"代码即文档。"
]
html = """
<h1>今日名言</h1>
<p id="quote">点击按钮换一句!</p>
<button onclick="newQuote()">换一句</button>
<script>
const quotes = %s;
function newQuote() {
const random = quotes[Math.floor(Math.random() * quotes.length)];
document.getElementById('quote').innerText = random;
}
</script>
""" % quotes_list # 把 Python 列表转成 JS 数组(仅演示,实际需 json.dumps)
return HttpResponse(html)
🔒 安全提示:直接拼接字符串有 XSS 风险!生产环境请用 Django 模板系统(下节预告)。
现在点击按钮,名言会动态切换,无需刷新页面!这就是 JS 的魔力。
七、关于 Go 的说明(为什么没用 Go?)
你可能会问:关键词里还有 Go,怎么没出现?
其实,Go 是另一门编程语言,常用于高性能后端服务(比如微服务、API 网关)。而 Django 是 Python 的 Web 框架。
| 对比项 | Django (Python) | Go (Gin/Echo) |
|---|---|---|
| 学习曲线 | 平缓,适合新手 | 较陡,需理解并发、指针 |
| 开发速度 | 快(自带 ORM、Admin) | 快但需手动组装 |
| 适用场景 | 中小型网站、快速原型 | 高并发、云原生服务 |
✅ 结论:你是零基础?选 Django。你想做高并发网关?再学 Go。
八、常见问题 & 避坑指南
❓1. 为什么页面没有样式?全是文字?
→ Django 默认不处理 CSS/JS。你可以:
- 在 HTML 里内联写
<style>(临时) - 后续学习 Django 的 静态文件(static files) 功能
❓2. 修改代码后页面没变化?
→ 确保你保存了文件,并且开发服务器正在运行(runserver 会自动重载,但有时需手动重启)。
❓3. 能不能连接真实数据库?
→ 可以!Django 默认用 SQLite(文件型数据库,适合开发)。部署时换成 PostgreSQL 或 MySQL 即可。只需改 settings.py 中的 DATABASES 配置。
❓4. 这和 Flask 有什么区别?
→ Flask 更“轻量”,需要自己装插件;Django 是“全家桶”,开箱即用。新手建议从 Django 入门。
九、下一步学习建议
恭喜你完成了第一个 Django 网站!接下来可以:
学习 Django 模板系统
用.html文件代替字符串拼接,更安全更清晰。尝试 Model 和 Admin 后台
创建数据库表,用 Django 自带的管理界面添加名言。对比学习其他技术
- 想做爬虫?学
requests+BeautifulSoup - 想做前端?学 HTML/CSS/JavaScript 基础
- 想了解 Go?等你熟悉 Web 开发后再尝试
- 想做爬虫?学
结语
我当初学 Django 时,花了三天才搞明白 URL 路由怎么配。但一旦跑通第一个页面,那种“我居然做出了一个网站!”的成就感,至今难忘。
编程不是天才的专利,而是耐心和实践的积累。你现在看到的每一行代码,都是别人一步步调试出来的。
所以,别怕犯错。删掉重来,改错变量名,端口冲突……这些都是成长的勋章。
🌟 你的第一个网站已经诞生。接下来,世界由你构建。
Happy coding!

评论 0