当前位置: 首页 > news >正文

django的URL路由配置常用方式

目录

django路由速查

URL路由配置常用方式:

基本路由配置 - path()

应用级路由包含(路由分发) - include()

带参数的路由

正则表达式路由 - re_path():

路由命名空间:

传递额外参数:


django路由速查

URL路由配置常用方式:

  1. 基本路由配置 - path()

作用:最基本的路由配置使用path()函数

写法位置:主应用url.py或者子应用url.py

语法格式:

1.1.配置路由规则:

urlpatterns = [path('路由路径/', view.视图函数, name='视图名称'),]

1.2.在主/子应用view.py构建对应的视图函数

例如:

path('home/', home, name='home'),

  1. 应用级路由包含(路由分发) - include()

作用:为了更好地组织项目结构,通常会将不同应用的路由配置分离,然后在主路由中使

写法位置:主应用url.py

语法格式:

1.1.主应用路由分发配置路由规则:

urlpatterns = [path('路由路径/', include('子应用名称.url模块对象'), name='视图名称'),]

1.2.子应用配置路由规则url:

urlpatterns = [path('路由路径/', view.视图函数, name='视图名称'),]

1.3.在子应用的view.py构建对应的视图函数

例如:

path('myapp1/', include("myapp1.urls"), name='myapp1'),

  1. 带参数的路由

作用:Django支持在路由中定义参数,参数会传递给视图函数:

写法位置:子应用url.py

语法格式:

1.1.配置路由规则:

urlpatterns = [path('路径/<数据类型:变量参数名称>/', view.视图函数, name='视图名称'),]

1.2.在主/子应用view.py构建对应的视图函数

例如:

path('list/<int:pk>/', views.getList, name='booksID'),path('list/<str:slug>/', views.getList, name='booksName'),

  1. 正则表达式路由 - re_path():

作用:对于更复杂的路由匹配需求,可以使用re_path()函数,它支持正则表达式:

写法位置:子应用url.py

语法格式:

1.1.配置路由规则:

urlpatterns = [re_path(r'^路径/(?P<参数名称>正则表达式)$/', view.视图函数, name='视图名称'),]

1.2.在子应用view.py构建对应的视图函数

def 视图函数名称(request,参数名称):

使用参数名称----

articles = Article.objects.filter(字段名称__参数名称=参数名称)

例如:

re_path(r'^student/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', 
views.getStudentList, name='studentInfo')

  1. 路由命名空间:

作用:为了避免不同应用间路由名称冲突,可以使用命名空间:

使用:

1.主路由URL配置: path('路由地址/',include( "子路URL", namespace='命名空间'),name='视图名称' ),

2.在子路由URL中添加 app_name="命名空间"

3.在子路由的views中反向解析URL地址:reverse('命名空间:视图名称',args参数)

4.在T模版中 使用 {% url '子应用名称:命名空间' %}

  1. 传递额外参数:

作用:可以在路由中传递额外的参数给视图函数

写法位置:子应用url.py

语法格式:

1.1.配置路由规则:

urlpatterns = [path('路径/<数据类型:变量参数名称>/', view.视图函数,{'参数名称': '参数值'} name='视图名称'),]

1.2.在主/子应用view.py构建对应的视图函数

例如:

path('list/tech', views.getList, {'category': 'tech'}, name='booksID'),

http://www.dtcms.com/a/361829.html

相关文章:

  • C# Task 入门:让你的程序告别卡顿
  • 基于STM32单片机的无线鼠标设计
  • 【ComfyUI】图像反推描述词总结
  • 杰理ac791无法控制io脚原因
  • 【算法】算法题核心类别与通用解题思路
  • 时序数据库IoTDB:为何成为工业数据管理新宠?
  • 【frontend】w3c的发展历史ToDo
  • accelerate、trainer、lightning还是pytorch?
  • SpringBoot 分库分表 - 实现、配置与优化
  • 雅思听力第四课:配对题核心技巧与词汇深化
  • CLion编译基于WSL平台Ubuntu系统的ros项目
  • 1.人工智能——概述
  • 测试开发的角色
  • 动态规划:硬币兑换II
  • 异常类分析
  • HTML应用指南:利用GET请求获取全国招商银行网点位置信息
  • 软件测试面试技巧-面试问题大全
  • 盟接之桥说制造:守正出奇:在能力圈内稳健前行,以需求导向赢得市场
  • 综合实验:DHCP、VLAN、NAT、BDF、策略路由等
  • 数据库主键选择策略分析
  • 【高级】系统架构师 | 2025年上半年综合真题
  • Linux系统结构(概要)
  • 实现一个线程池管理器
  • 数字后端tap cell:新老工艺tap cell区别
  • 人工智能视频画质增强和修复软件Topaz Video AI v7.1.1最新汉化,自带星光模型
  • 网络编程5-数据库、sqlite3数据库
  • 多级渐远纹理(Mipmap):原理、生成、采样与 OpenGL 实践
  • 2025 金融行业证书怎么选?从能力适配到职业方向的理性梳理
  • 7-ATSAM3X8-DAC输出
  • 网络与信息安全有哪些岗位:(13)安全服务工程师 / 顾问