Django入门教程:搭建你的第一个Python网站
大家好,我是技术团队的培训负责人,过去五年带过上百名应届生从零开始学习后端开发。今天写这篇教程,是因为我深知:对完全没碰过Web开发的新手来说,Django 的“魔法”太多,文档术语太专业,很容易在第一步就卡住甚至放弃。
我当初学的时候,光是搞懂“为什么一个命令就能跑起网站”就花了整整两天。所以今天,我会用最直白的语言、最清晰的步骤,带你亲手搭建第一个 Python 网站。全程注重安全意识——这是每个后端开发者必须刻进骨子里的习惯。
一、Django 是什么?能做什么?
Django 是一个用 Python 编写的开源 Web 框架。简单说,它是一套帮你快速搭建网站后端的“工具箱”。
- 后端:就是网站背后的逻辑部分,比如用户登录、数据存储、接口处理等。你看不到,但网站离不开它。
- Python:一种语法简洁、易读易写的编程语言,特别适合初学者入门。
- Django 的优势:自带大量功能(如用户系统、管理后台),开发速度快,社区强大,而且默认就做了很多安全防护(比如防跨站脚本攻击、CSRF 保护等)。
💡 安全小贴士:Django 默认开启多项安全机制,比如自动转义模板变量、防止 SQL 注入等。但“默认安全”不等于“绝对安全”,我们后面会强调哪些地方需要额外注意。
二、环境准备:5分钟搭好开发环境
1. 安装 Python(3.8+)
去 python.org 下载最新版 Python(建议 3.8 或更高)。安装时务必勾选 “Add Python to PATH”(Windows 用户)。
验证安装:
python --version
# 或
python3 --version
看到类似 Python 3.10.12 就说明成功了。
2. 创建虚拟环境(强烈推荐!)
虚拟环境能隔离项目依赖,避免不同项目之间的包冲突。
# 创建虚拟环境(名字叫 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)即表示安装成功。
⚠️ 安全提醒:永远不要用
sudo pip install全局安装包!这可能导致系统污染和权限问题。虚拟环境是安全开发的第一步。
三、核心概念:用大白话讲清楚
在动手前,先理解三个关键概念:
| 概念 | 解释 | 类比 |
|---|---|---|
| Project(项目) | 整个网站的容器,包含多个 App | 一栋大楼 |
| App(应用) | 实现具体功能的模块,比如博客、用户系统 | 大楼里的房间(厨房、卧室) |
| View(视图) | 处理用户请求并返回响应的函数或类 | 接待员,负责回答访客问题 |
我当初学的时候总混淆 Project 和 App。记住:一个 Project 可以包含多个 App,但一个 App 只属于一个 Project。
四、实战:一步步搭建“欢迎页面”网站
现在,我们来创建一个显示“Hello, Django!”的网站。
步骤 1:创建 Project
django-admin startproject mysite
cd mysite
这会生成一个名为 mysite 的文件夹,结构如下:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
manage.py:Django 的命令行工具,用来运行服务器、创建 App 等。settings.py:整个项目的配置文件(数据库、时区、安全设置等)。
步骤 2:创建第一个 App
python manage.py startapp hello
生成 hello/ 文件夹,里面包含:
views.py:写处理逻辑的地方models.py:定义数据结构(本例暂不用)apps.py:App 配置
🔒 安全提示:
settings.py中有个SECRET_KEY,这是加密用的关键密钥!永远不要把它提交到 Git 公开仓库。后续我们会教你怎么用环境变量保护它。
步骤 3:注册 App
打开 mysite/settings.py,找到 INSTALLED_APPS 列表,加入 'hello':
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
# ... 其他默认项
'hello', # ← 加这一行
]
步骤 4:写一个 View(视图)
编辑 hello/views.py:
from django.http import HttpResponse
def welcome(request):
return HttpResponse("Hello, Django! 👋")
这个函数接收一个 request(用户请求),返回一个 HTTP 响应。
步骤 5:配置 URL 路由
Django 需要知道:当用户访问哪个网址时,调用哪个 View。
- 在
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 应用的路由
]
🌐 路由流程图(文字版): 用户访问
http://127.0.0.1:8000/
→ 主路由匹配到''→ 转发给hello.urls
→hello.urls匹配到''→ 调用views.welcome
→ 返回 "Hello, Django!"
步骤 6:启动开发服务器
python manage.py runserver
看到输出:
Starting development server at http://127.0.0.1:8000/
打开浏览器,访问 http://127.0.0.1:8000/,就能看到你的第一个 Django 页面!
💡 新手常见问题:如果报错
Address already in use,说明 8000 端口被占用了。换端口启动:python manage.py runserver 8080
五、常见问题解答(FAQ)
Q1:为什么我的页面中文显示乱码?
A:Django 默认使用 UTF-8 编码。确保你的 .py 文件保存为 UTF-8 格式(大多数编辑器默认如此)。如果仍乱码,在 HttpResponse 中显式指定:
return HttpResponse("你好,Django!", content_type="text/plain; charset=utf-8")
Q2:修改代码后页面没更新?
A:Django 开发服务器会自动重载代码,但有时会卡住。按 Ctrl+C 停止服务器,重新运行 runserver 即可。
Q3:如何关闭调试模式?
A:上线前必须关闭! 打开 settings.py,将 DEBUG = True 改为 False,并设置 ALLOWED_HOSTS = ['yourdomain.com']。否则会暴露敏感信息!
Q4:为什么不能直接用 print() 输出到网页?
A:print() 输出到控制台,不是网页。要用 HttpResponse 或 Django 模板系统。
六、下一步学习建议
恭喜你完成了第一个 Django 网站!但这只是起点。接下来我建议你:
学习 Django 模板系统
把 HTML 写在单独的.html文件里,用{{ 变量 }}渲染数据,比硬编码字符串更安全、更灵活。尝试 Models(数据库模型)
用几行 Python 代码定义数据表,Django 自动帮你生成数据库操作(ORM)。记住:永远不要手动拼接 SQL 语句,用 ORM 防止注入攻击。部署到线上(谨慎!)
初学者可用 PythonAnywhere 免费部署。但务必:- 关闭
DEBUG - 设置强密码
- 不提交
SECRET_KEY
- 关闭
阅读官方安全指南
Django 官网有详细的安全最佳实践:https://docs.djangoproject.com/en/stable/topics/security/
最后的话
我带过的很多应届生,都是从这样一个简单的 “Hello World” 开始,最终成长为独当一面的后端工程师。重要的不是一开始多厉害,而是坚持动手、不怕犯错。
记住:安全不是附加功能,而是开发习惯。从第一行代码开始,就要思考“这里会不会被攻击?”、“数据是否被正确验证?”。
如果你卡在某一步,别慌——把错误信息复制到搜索引擎,90% 的问题都有人遇到过。也可以留言问我。
现在,去改改你的 views.py,让页面显示你的名字吧!比如:
return HttpResponse("Hello, 张三! 欢迎来到 Django 世界!")
你已经迈出了成为 Python 后端开发者的第一步。加油!

评论 0