Django 入门指南:环境搭建、项目结构与URL路由机制
框架概述与核心组件解析
Django 是一个基于 Python 的高级 Web 框架,遵循 DRY(Don't Repeat Yourself)原则,旨在加速开发流程。它内置了处理常见 Web 开发任务的模块,包括用户认证、表单验证、数据库操作和后台管理等。
主要文件职责划分
- urls.py:定义 URL 路由规则,将请求路径映射到对应的视图函数或类。
- views.py:接收 HTTP 请求并返回响应,通常通过渲染模板或直接返回数据实现。
- models.py:描述数据模型,与数据库表结构一一对应,支持 ORM 操作。
- settings.py:包含项目的全局配置,如数据库设置、中间件、静态资源路径等。
- admin.py:注册数据模型后可自动生成可视化后台管理系统。
- templates/:存放 HTML 模板文件,支持动态内容注入和模板继承。
安装流程与虚拟环境配置
确保已安装 Python 3.6+ 后,推荐使用 pip 进行包管理:
pip install Django
为避免版本冲突,建议使用虚拟环境隔离不同项目依赖:
# 安装虚拟环境工具
pip install virtualenv virtualenvwrapper
# Linux/macOS 设置环境变量
export WORKON_HOME=~/.venvs
source /usr/local/bin/virtualenvwrapper.sh
# 创建并激活环境
mkvirtualenv myproject
workon myproject
Windows 用户可使用 virtualenvwrapper-win 简化操作:
pip install virtualenvwrapper-win
mkvirtualenv myproject
workon myproject
基础命令集
创建新项目:
django-admin startproject mysite
生成应用模块:
cd mysite
python manage.py startapp core
启动开发服务器:
python manage.py runserver
python manage.py runserver 8001 # 自定义端口
python manage.py runserver 0.0.0.0:8000 # 允许外部访问
数据库迁移操作:
python manage.py makemigrations
python manage.py migrate
创建管理员账户:
python manage.py createsuperuser
进入 Django Shell 调试环境:
python manage.py shell
构建首个 Web 页面
在 core/views.py 中定义响应逻辑:
from django.http import HttpResponse
def welcome(request):
return HttpResponse("欢迎访问我的站点")
在主项目的 urls.py 中建立路由关联:
from django.urls import path
from core import views
urlpatterns = [
path('', views.welcome, name='home'),
]
同时需将应用添加至 settings.py 的 INSTALLED_APPS 列表:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'core', # 添加此行
]
运行服务后访问 http://127.0.0.1:8000 即可查看结果。
URL 设计进阶:参数传递与反向解析
创建一个支持数学运算的应用:
# calc/views.py
def calculate_sum(request, x, y):
result = int(x) + int(y)
return HttpResponse(f"{x} + {y} = {result}")
配置带捕获组的 URL 规则:
# urls.py
path('sum/<int:x>/<int:y>/', calculate_sum, name='sum_view')
访问 /sum/3/5/ 将输出 "3 + 5 = 8"。Django 自动将路径中的数字转换为整型并传入视图函数。
利用命名 URL 实现灵活跳转
当需要修改 URL 格式时,可通过名称引用保持代码稳定性:
<a href="{% url 'sum_view' 2 3 %}">计算 2+3</a>
在 Python 代码中也可动态获取地址:
from django.urls import reverse
url = reverse('sum_view', args=[4, 6]) # 返回 '/sum/4/6/'
若将来更改路由为 path('math/add/<int:x><int:y>', ...),只要保留 name='sum_view',所有通过 reverse() 或模板标签调用的地方将自动适配新路径。
实现旧链接重定向
为保障用户体验,在变更 URL 后应提供跳转机制:
from django.shortcuts import redirect
def legacy_redirect(request, x, y):
return redirect(reverse('sum_view', args=(x, y)))
并在 URL 配置中添加旧路径映射:
path('old_add/<int:x><int:y>/', legacy_redirect),
这样即使用户访问废弃的地址,也能被正确引导至新页面。