当前位置:首页 > 技术 > 正文内容

Django 入门指南:环境搭建、项目结构与URL路由机制

访客 技术 2026年8月9日 1

框架概述与核心组件解析

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.pyINSTALLED_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),

这样即使用户访问废弃的地址,也能被正确引导至新页面。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。