【Django】框架-路由系统核心概念解析

1. 最基本路由关系

路由是URL地址与处理逻辑(视图函数)的对应关系。

本质:将用户请求的URL路径映射到具体的处理程序(如Django视图函数)。

示例

# urls.py  
urlpatterns = [  path('home/', views.home_view),  # URL路径"home/" → home_view函数  
]

当用户访问http://域名/home/时,自动触发home_view函数处理请求。

2. 动态路由(含正则)

动态路由通过URL参数传递数据,支持正则表达式灵活匹配路径

参数捕获

# 捕获数字参数  
path('user/<int:user_id>/', views.user_detail),  
# 正则匹配(复杂场景)  
re_path(r'users(\w+)/', views.users)
re_path(r'^articles/(?P<year>[0-9]{4})/$', views.article_year),  

访问/user/123/时,user_id=123传递给视图函数。

正则表达式作用

约束参数格式(如限定4位年份)

精细化路径匹配规则

3. 路由分发到不同App

大型项目需拆分路由到多个App,通过include实现模块化管理

操作步骤:

(1)主路由配置(项目层)
# 主urls.py  
urlpatterns = [  path('blog/', include('blog.urls')),  # 子路由:blog App  path('shop/', include('shop.urls')),   # 子路由:shop App
]
(2)子路由配置App层)
# blog/urls.py  
urlpatterns = [  path('list/', views.blog_list),  
]

访问/blog/list/时,由blogAppblog_list视图处理

核心优势

  • 解耦项目结构
  • 便于团队协作维护

4. NameNamespace

解决多App路由命名冲突问题,支持反向解析URL

(1)Name(名称)

为路由定义唯一别名,反向生成URL

# 定义  
path('about/', views.about, name='about_page'),  # 一般会有以下两处会用到
# 1.模板中反向生成url  (.html文件中)
<a href="{% url 'about_page' %}">关于我们</a>
# 2.在视图函数中生成URL
from django.urls import reverseurl = reverse("about_page") 

(2)Namespace(命名空间)

区分不同App的同名路由:

  from django.urls import path, re_path, include# 主路由urlpatterns = [path('api/', include("apps.api.urls",namespace='a1')),path('web/', include("apps.web.urls",namespace='w1')),]
  from django.urls import path, re_pathfrom . import views# 子路由:api/urls.pyurlpatterns = [path('login/', views.login,name="login"),path('auth/', views.auth, name='auth'),]

from django.urls import path, re_pathfrom . import views# 子路由:web/urls.pyurlpatterns = [path('home/', views.home,name='home'),path('order/', views.order,name='order'),path('auth/', views.order, name='auth'),]

# 在某个URL或者视图中反向生成:
from django.urls import reverse
url = reverse("a1:login")    
url = reverse("w1:home")    url = reverse("a1:auth")    
url = reverse("w1:auth")    
  • 避免多个Apparticle_detail名称冲突
  • namespace需要设置app_name:
# 主路由  
urlpatterns = [path('api/', include("apps.api.urls", namespace='a1')),]
  from django.urls import path, re_pathfrom apps.api import views# 子路由:api/urls.pyurlpatterns = [path('login/', views.login, name="login"),path('auth/', views.auth, name='auth'),]app_name = "api"

5.总结对比

概念作用典型场景
基本路由关系URL → 视图映射简单页面跳转
动态路由(正则)参数传递与格式约束用户详情页、分类过滤
路由分发(include模块化管理多App路由大型项目分层开发
NameNamespace反向解析URL + 避免命名冲突App协作、模板链接生成

路由系统通过路径匹配与参数处理,实现Web请求的精准分发与管理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/77033.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

理解 results = model(source, stream=True) 的工作原理和优势

1. 核心概念解析 (1) streamTrue 的作用 生成器模式&#xff1a;当处理视频或图像序列时&#xff0c;streamTrue 会将结果包装成一个 生成器&#xff08;Generator&#xff09;&#xff0c;逐帧生成 Results 对象&#xff0c;而不是一次性返回所有结果。内存优化&#xff1a;…

重新定义“边缘”:边缘计算如何重塑人类与数据的关系

在数字化浪潮中&#xff0c;云计算曾是科技界的宠儿&#xff0c;但如今&#xff0c;边缘计算正在悄然改变游戏规则。它不仅是一种技术进步&#xff0c;更是对人类与数据关系的一次深刻反思。本文将探讨边缘计算如何从“中心化”走向“分布式”&#xff0c;以及它如何在效率、隐…

MCP 协议知识分享

MCP 协议知识分享 一、MCP 协议概述1.1 定义与背景1.2 核心价值1.3 与传统 API 的对比 二、技术架构与工作原理2.1 核心组件2.2 通信机制2.3 典型工作流程 三、关键技术与应用场景3.1 核心技术3.2 典型应用场景 四、与微软技术的集成4.1 Azure OpenAI 服务4.2 Playwright MCP 服…

策略模式实现 Bean 注入时怎么知道具体注入的是哪个 Bean?

Autowire Resource 的区别 1.来源不同&#xff1a;其中 Autowire 是 Spring2.5 定义的注解&#xff0c;而 Resource 是 Java 定义的注解 2.依赖查找的顺序不同&#xff1a; 依赖注入的功能&#xff0c;是通过先在 Spring IoC 容器中查找对象&#xff0c;再将对象注入引入到当…

Linux》》bash 、sh 执行脚本

通常使用shell去运行脚本&#xff0c;两种方法 》bash xxx.sh 或 bash “xxx.sh” 、sh xxx.sh 或 sh “xxx.sh” 》bash -c “cmd string” 引号不能省略 我们知道 -c 的意思是 command&#xff0c;所以 bash -c 或 sh -c 后面应该跟一个 command。

【解析】ReentrantLock锁、Syschronized锁面试点解析

面试官提问 ● 公平锁与非公平锁的区别是什么&#xff1f; ● 什么是可重入锁&#xff1f; ● 什么是死锁&#xff0c;怎样避免死锁&#xff1f; ● ReentrantLock与Syschronized实现原理是什么&#xff1f;两者有什么区别&#xff1f; ● 请说明ReentrantLock获取锁与释放…

04.Python代码NumPy-通过索引或切片来访问和修改

04.Python代码NumPy-通过索引或切片来访问和修改 提示&#xff1a;帮帮志会陆续更新非常多的IT技术知识&#xff0c;希望分享的内容对您有用。本章分享的是Python基础语法。前后每一小节的内容是存在的有&#xff1a;学习and理解的关联性&#xff0c;希望对您有用~ python语法…

跨平台数据采集如何解决不同平台之间的数据兼容性问题?

在数字化时代&#xff0c;企业越来越依赖多个信息系统来管理业务&#xff0c;例如ERP&#xff08;企业资源计划&#xff09;、CRM&#xff08;客户关系管理&#xff09;、财务管理系统、电商平台等。然而&#xff0c;在进行跨平台数据采集时&#xff0c;不同系统之间的数据格式…

解决 vite.config.ts 引入scss 预处理报错

目录 报错1&#xff1a;[plugin:vite:css] [SASS] Error&#xff1a;Cant find stylesheet to import 报错2&#xff1a;[plugin:vite:css] [sass] Error: Undefined variable 版本号&#xff1a; "sass": "^1.86.3","sass-loader": "^1…

C++笔记,数学函数

参考链接&#xff1a;C中数学函数的使用方法_cpp里指数函数-CSDN博客 头文件 <cmath> 1. 基本的算数运算函数 1.1 sqrt() - 计算平方根 功能&#xff1a;计算一个非负实数的平方根。原型&#xff1a;double sqrt(double x);示例代码&#xff1a; #include <iostr…

不关“猫”如何改变外网IP?3种免重启切换IP方案

每次更换外网IP都要重启路由器&#xff1f;太麻烦了&#xff01;那么&#xff0c;不关猫怎么改变外网IP&#xff1f;无论是为了网络调试、爬虫需求&#xff0c;还是解决IP限制问题&#xff0c;频繁重启设备既耗时又影响效率。其实&#xff0c;更换外网IP并不一定要依赖“重启大…

道路运输安全员企业负责人考试内容与范围

道路运输企业主要负责人&#xff08;安全员&#xff09;考证要求 的详细说明&#xff0c;适用于企业法定代表人、分管安全负责人等需取得的 《道路运输企业主要负责人和安全生产管理人员安全考核合格证明》&#xff08;交通运输部要求&#xff09;。 考试内容与范围 1. 法律法…

深入剖析 WiFi 定位解析功能:原理、技术优势与应用场景

WiFi 定位解析功能的原理​ 信号强度与距离的关系​ WiFi 定位的核心原理基于无线信号传播过程中的一个基本特性&#xff1a;信号强度与信号发射源&#xff08;即 WiFi 接入点&#xff0c;Access Point&#xff0c;简称 AP&#xff09;和接收设备之间距离的关联。一般来说&am…

NVIDIA RTX™ GPU 低成本启动零售 AI 场景开发

零售行业正在探索应用 AI 升级客户体验&#xff0c;同时优化内部流程。面对多重应用场景以及成本优化压力&#xff0c;团队可采用成本相对可控的方案&#xff0c;来应对多重场景的前期项目预演和落地&#xff0c;避免短期内大规模投入造成的资源浪费。 客户体验 AI 场景的研究…

首次打蓝桥杯总结(c/c++B组)

目录 一、对每个题进行总结 1.填空题 2.第一个大题---可分解的正整数&#xff08;10--3&#xff09; 3.第二道大题---产值调整&#xff08;10--3&#xff09; 4.第三道大题---画展部署&#xff08;15--7&#xff09; 5.第四道大题---水质检测&#xff08;15--3&#x…

林纳斯·托瓦兹:Linux系统之父 Git创始人

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 林纳斯托瓦兹&#xff1a;Linux之父、Git创始人 一、传奇人物的诞生 1. 早年生活与家…

C语言多进程素数计算

题目描述&#xff1a; 以下代码实现了一个多进程素数计算程序&#xff0c;通过fork()函数创建子进程来并行计算指定范围内的素数。请仔细阅读代码并回答以下问题。 #include "stdio.h" #include "unistd.h" #include <sys/types.h> #include "…

uniapp-商城-27-vuex 通用方法

1 概述 上节说了vuex 的基本使用方法,分析了基本的使用方法。 在使用中,常见使用,我们要针对状态,购物车,不同类事务的管理,如果按照上节课的通用方法,那么使用和维护是会很大的难度的。 所以这里就必须要进行处理,借助 modules 进行定义不同类事务的处理手段。便于…

半导体设备通信标准—secsgem v0.3.0版本使用说明文档(4)之HSMS(SEMI E37)

文章目录 1、消息快1.1、选择 请求1.2、选择响应1.3、取消选择请求1.4、取消选择响应1.5、Linktest 请求1.6、Linktest 响应1.7、拒绝请求1.8、单独请求1.9、数据消息 2、 协议2.1、 事件 SEMI E37 HSMS 定义主机和设备之间通过 TCP 协议的通信。 它指定用于启动和终止连接的数…

通过GO后端项目实践理解DDD架构

最近在工作过程中重构的项目要求使用DDD架构&#xff0c;在网上查询资料发现教程五花八门&#xff0c;并且大部分内容都是长篇的概念讲解&#xff0c;晦涩难懂&#xff0c;笔者看了一些github上入门的使用DDD的GO项目&#xff0c;并结合自己开发中的经验&#xff0c;谈谈自己对…