Django快速上手
Django 快速上手:从原理到实战的完整教学
一、Web开发的演变与背景
在Web发展的初期,开发者需要手动编写静态HTML文件,这对频繁更新的网站(如新闻门户)来说效率极低。为了解决这个问题,动态网页技术应运而生:
- 早期方案: CGI(公共网关接口)通过后台程序动态生成HTML内容;
- 发展演化: PHP、ASP、JSP 等服务器端语言兴起;
- 现代方案: 基于框架(如 Django)的 MVC/MTV 架构系统,自动路由、模板渲染、数据库集成。
✅ Web应用的核心价值: 前端统一入口(浏览器)、后端提供资源(API/页面),即用即访问,跨平台、跨设备。
二、Web 应用机制与基本术语
工作流程概览
- 用户输入域名(URL)
- DNS 解析为服务器 IP 地址
- 发起 HTTP 请求
- Web 服务器接收请求,传给应用程序
- 应用处理业务逻辑并返回响应(HTML、JSON等)
核心术语解释
术语 | 说明 |
---|---|
URL/URI | 资源的网络唯一标识 |
域名 | 用于访问网站的可读标识符(如 example.com ) |
DNS | 将域名解析为 IP 地址 |
IP 地址 | 唯一标识网络设备的数字地址 |
HTTP 协议 | 客户端与服务器通信的应用协议 |
反向代理 | 服务器作为中间人转发请求和响应(如 Nginx) |
Web服务器 | 专门负责处理HTTP请求的服务器软件(如 Apache/Nginx) |
三、Django 框架概述
什么是 Django?
Django 是一个开箱即用、全栈、功能完善的 Python Web 框架,具有以下特点:
- 遵循 MTV 架构(Model-Template-View)
- 遵循 DRY 原则(Don't Repeat Yourself)
- 自动路由、模板系统、ORM、表单校验、安全机制一应俱全
Django 最早由新闻网站开发团队构建,因此非常适合数据密集型、内容驱动的网站开发。
MTV 架构模型对照 MVC
Django(MTV) | MVC 标准 | 说明 |
---|---|---|
Model | Model | 数据模型,对应数据库结构 |
Template | View | 页面模板,负责数据展示 |
View | Controller | 视图函数,处理请求逻辑 |
四、Django 的使用场景与优势
使用场景
- 企业网站与内容管理系统(CMS)
- 数据可视化平台、管理后台
- RESTful API 服务(结合 Django REST Framework)
- 教育平台、社交网站、博客系统等
最佳实践优势
优势 | 说明 |
---|---|
内置 Admin 后台 | 零代码生成数据库管理界面 |
强大的 ORM 系统 | 将数据库操作抽象为 Python 类 |
模板引擎 | 高效构建页面结构,适配前后端分离或结合的开发模式 |
丰富的三方生态 | 社区活跃,插件丰富,文档完整 |
安全机制内建(如CSRF) | 默认防御常见攻击,如跨站脚本、SQL注入 |
五、Django 快速上手实战
步骤一:环境准备与项目创建
pip3 install -U pip
pip3 install django==2.2.13
django-admin startproject hellodjango
cd hellodjango
python manage.py runserver
浏览器访问 http://127.0.0.1:8000
,成功加载默认首页即表示启动成功。
步骤二:项目结构介绍
文件/目录 | 功能说明 |
---|---|
manage.py |
Django 管理脚本入口 |
hellodjango/settings.py |
全局配置文件(数据库、模板路径、时区等) |
hellodjango/urls.py |
URL 映射规则 |
hellodjango/wsgi.py |
WSGI 服务接口入口 |
建议修改语言和时区配置(settings.py
):
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
步骤三:创建第一个应用并响应请求
python manage.py startapp first
views.py
中添加响应函数
from django.http import HttpResponse
def show_index(request):
return HttpResponse('<h1>Hello, Django!</h1>')
修改项目的 urls.py
注册路径
from django.contrib import admin
from django.urls import path
from first.views import show_index
urlpatterns = [
path('admin/', admin.site.urls),
path('hello/', show_index),
]
浏览器访问 http://127.0.0.1:8000/hello/
即可看到内容。
步骤四:生成动态内容
from random import sample
from django.http import HttpResponse
def show_index(request):
fruits = ['Apple', 'Banana', 'Orange', 'Mango']
selected = sample(fruits, 2)
return HttpResponse(f"<h3>推荐水果:{', '.join(selected)}</h3>")
每次刷新都会看到不同的水果推荐。
六、模板引擎:渲染更复杂页面
步骤一:添加模板目录
在项目根目录创建 templates/index.html
:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>首页</title></head>
<body>
<h1>今日推荐水果:</h1>
<ul>
{% for fruit in fruits %}
<li>{{ fruit }}</li>
{% endfor %}
</ul>
</body>
</html>
步骤二:设置模板路径(settings.py
)
TEMPLATES[0]['DIRS'] = [os.path.join(BASE_DIR, 'templates')]
步骤三:修改视图使用 render
from django.shortcuts import render
from random import sample
def show_index(request):
fruits = ['Apple', 'Banana', 'Orange', 'Mango', 'Peach']
selected = sample(fruits, 3)
return render(request, 'index.html', {'fruits': selected})
刷新页面可见后端渲染的动态 HTML。
七、最佳实践与建议
类别 | 最佳实践 |
---|---|
应用划分 | 每个独立模块创建单独的 app |
模板结构 | 使用统一的模板文件夹并分类管理(如 base.html) |
配置管理 | 使用 .env 文件配合 django-environ 管理敏感信息 |
虚拟环境 | 建议使用 venv/conda 隔离项目依赖 |
路由管理 | 大项目推荐使用 include() 分模块管理 URL |
数据模型 | 使用 Django ORM 统一管理数据库 |
异常处理 | 视图中建议使用 try-except 并自定义异常页面 |
部署上线 | 使用 Gunicorn + Nginx + Supervisor 部署 |
八、推荐学习资料
- ✅ Django 官方文档(多语言)
- 📘 《Django基础教程(第2版)》 图灵出版社
- 🎓 Django Girls 教程
- 🧑💻 B站优质视频教程:搜索“Django 实战开发”系列
总结:Django 是初学者快速开发 Web 项目的首选框架
通过以上实战你已掌握:
- Web 开发的基本机制
- Django 项目的创建与配置
- 请求响应流程(View + URL)
- 动态页面生成与模板渲染
- 使用 PyCharm 高效开发 Django 应用
未来你可以继续探索:
- Django ORM 与数据库建模
- Django Admin 后台管理系统
- Django REST Framework 构建API服务
- 前后端分离与部署上线
🎯 Django 的核心价值是“用最少的代码实现最大功能”,适合快速上线、结构清晰、功能全面的 Web 项目开发。