讲师中心 微信公众号

工具推荐

视频效率加速
AniShort
AniShort

AI短剧协同制作平台

剧云
剧云

中文短剧剧本制作平台

Seko
Seko

AI短剧一键生成成片

updream

一键生成高质量推广成片

如何正确组织 Django 项目的 URL 路由结构

阿涛同学_1734

阿涛同学_1734

发布时间:2026-02-19 13:27:12

|

965人浏览过

|

来源于php中文网

原创

如何正确组织 Django 项目的 URL 路由结构

本文详解 Django 中因重复包含同一应用 URL 配置导致 url 模板标签解析错误的问题,指出命名冲突根源,并提供清晰、可复用的 URL 分层设计方案。

本文详解 django 中因重复包含同一应用 url 配置导致 `url` 模板标签解析错误的问题,指出命名冲突根源,并提供清晰、可复用的 url 分层设计方案。

在 Django 开发中,URL 路由不仅是请求分发的入口,更是模板中反向解析(如 {% url 'name' %})的唯一依据。你当前遇到的问题——所有 {% url 'signup' %} 都被解析为 /business_signup/signup/ 而非预期的 /signup/——并非视图或 HTML 编写错误,而是 URL 命名空间冲突 的典型表现。

根本原因在于:Django 在启动时会一次性扫描全部 urlpatterns 并注册所有 name。当同一个应用(signin.urls)被多次 include() 时,后注册的同名路由会覆盖先前注册的同名路由。你的 project/urls.py 中:

path('', include('signin.urls')),        # 第一次注册:'signin', 'signup', 'business_signup'
path('home/', include('signin.urls')),    # 第二次注册:同名覆盖
path('signin/', include('signin.urls')), # 第三次...
path('signup/', include('signin.urls')),  # 第四次...
path('business_signup/', include('signin.urls')),  # ✅ 最后一次 → 所有 name 均绑定至此前缀下

因此,{% url 'signup' %} 实际指向的是最后注册的 business_signup/ 下的 signup 路径,即 /business_signup/signup/。

✅ 正确做法是:每个应用的 URL 配置只被 include() 一次,并通过路径前缀明确其作用域。推荐采用以下结构:

project/urls.py(主路由)

Django Wrap
Django Wrap

强戈环形山: q15040409-刻画家功能概述强戈环形山: q15040409-刻画家是一项面向实际任务的技能,主要用于平顶山: 维西翁: 1:1.0. 塔格斯: rap.github: 自动化。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。核心要点使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该

下载
from django.contrib import admin
from django.urls import path, include
from signin import views  # 直接导入需独立挂载的视图

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('signin.urls')),           # 根路径:/ → 由 signin 处理(如登录页)
    path('home/', views.default, name='home'),  # 独立挂载:/home/ → 统一跳转至 default 视图
]

signin/urls.py(应用内路由)

from django.urls import path
from . import views

app_name = 'signin'  # ✅ 强烈建议添加 app_name,避免跨应用命名冲突

urlpatterns = [
    path('', views.default, name='signin'),           # / → 登录页
    path('signup/', views.signup, name='signup'),     # /signup/
    path('business_signup/', views.business_signup, name='business_signup'),  # /business_signup/
]

此时,在模板中即可安全使用:

<!-- 正确解析为 /signup/ -->
<p>New here? <a href="{% url 'signin:signup' %}">Create an account</a></p>

<!-- 解析为 /home/ -->
<a href="{% url 'home' %}">Go to Home</a>

⚠️ 关键注意事项:

  • 禁止重复 include() 同一应用 URL 配置:这是引发命名覆盖的直接原因;
  • 务必为每个 include() 设置 app_name(在 signin/urls.py 中),并在模板中使用 app_name:name 格式调用(如 'signin:signup'),提升可维护性与安全性;
  • 静态路径(如 /home/)优先在主 urls.py 中定义,而非塞进应用路由,保持职责清晰;
  • 若未来需支持多语言或子域名,应进一步引入 i18n_patterns 或 host_patterns,但当前阶段保持扁平、唯一、语义化的路由结构最为关键。

遵循以上原则,你的 URL 将既满足用户访问逻辑(/, /signup/, /business_signup/),又确保模板反向解析精准可靠,彻底告别路径“漂移”问题。

相关文章

路由优化大师
路由优化大师

路由优化大师是一款及简单的路由器设置管理软件,其主要功能是一键设置优化路由、屏广告、防蹭网、路由器全面检测及高级设置等,有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
Flowith
Flowith Hot

Flowith是一款基于画布和智能体工作流的 AI 协作工作空间。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

码上飞
码上飞 Hot

一款基于自然语言的AI应用开发平台,可根据用户描述自动生成应用程序,帮助个人和团队快速完成应用原型与开发。

函子Zion

一款支持AI搭建、可视化编辑和多端发布的全栈无代码开发平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

相关专题

更多
Python Web 框架 Django 深度开发
Python Web 框架 Django 深度开发

本专题系统讲解 Python Django 框架的核心功能与进阶开发技巧,包括 Django 项目结构、数据库模型与迁移、视图与模板渲染、表单与认证管理、RESTful API 开发、Django 中间件与缓存优化、部署与性能调优。通过实战案例,帮助学习者掌握 使用 Django 快速构建功能全面的 Web 应用与全栈开发能力。

613

2026.02.04

Python Django REST Framework接口安全与认证体系实践
Python Django REST Framework接口安全与认证体系实践

本专题围绕 Django REST Framework 展开,深入讲解 API 认证、JWT 鉴权、权限控制、接口安全防护以及防攻击策略设计。通过完整后端案例,帮助开发者构建安全可靠的 Web API 服务体系。

280

2026.06.29

Go-Zero API开发使用教程
Go-Zero API开发使用教程

本专题聚焦Go-Zero的API开发,拆解.api描述文件的语法结构、路由与分组定义、参数绑定与校验规则,说明统一响应体、JWT鉴权、跨域与接口文档生成的落地方式,并给出网关聚合与接口测试的实践建议。

60

2026.11.12

Go-Zero安装与goctl环境配置教程
Go-Zero安装与goctl环境配置教程

本专题围绕Go-Zero的安装与工具链配置展开,讲清Go版本要求、goctl安装方式、代理镜像、protoc依赖与环境变量设置,说明多版本共存、升级回退与CI流水线安装的做法,并整理安装阶段的常见报错与验证步骤。

40

2026.11.12

Go-Zero零基础入门教程
Go-Zero零基础入门教程

本专题整理Go-Zero的入门知识,从框架定位、环境准备到跑通第一个API服务,讲清目录分层、配置加载、日志与中间件的基本用法,并对比Gin、Kratos的差异,帮助Go开发者建立整体认知,判断它是否适合当前项目。

20

2026.11.12

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

140

2026.11.06

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

120

2026.11.06

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

100

2026.11.06

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

100

2026.11.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Go-Zero HTTP服务开发指南
Go-Zero HTTP服务开发指南

共0课时 | 0人学习

Go-Zero goctl安装与使用手册
Go-Zero goctl安装与使用手册

共0课时 | 0人学习

Go-Zero框架快速开始指南
Go-Zero框架快速开始指南

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn