路由匹配与解析
2022/9/1 23:26:04
本文主要是介绍路由匹配与解析,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
django请求生命周期
路由匹配
1.路由 path('网址后缀',函数名) 一旦网址的后缀匹配上时,就会自动执行后面的函数并结束整个路由的匹配 2.路由结尾的斜杠 2.1如果输入网址的时候不写斜杠,django会就会进行二次处理 '自动加上斜杠,再匹配一次' 2.2django配置文件中可以指定是否自动添加斜杠 APPEND_SLASH = False 3.path转换器 3.1当网址后缀不固定的时候,可以使用转换器来匹配 'int': IntConverter(), 'path': PathConverter(), 'slug': SlugConverter(), 'str': StrConverter(), 'uuid': UuidConverter(), 3.2转换器匹配到的内容会当做视图的关键字参数传入 path('delete/<int:year>/<str:info>/', views.delete), 转换器有几个名字,那么视图函数的形参必须对应 def delete(request, year, info): pass 4.re_path正则匹配 re_path(正则表达式,函数名) 一旦网址后缀的正则能匹配内容就会自动执行后面的函数并结束整个路由的匹配 re_path('^test/', views.test) 5.正则匹配之无名分组 re_path('^test/(\d+)/', views.test) 正则表达式匹配到的内容会当做视图函数的位置参数传递给视图函数 6.正则匹配之有名分组 re_path('^rest/(?P<year>\d+)/(?P<others>.*?)/', views.test) 正则表达式匹配到的内容会当做视图函数的关键字参数传递给视图函数 7.django版本区别 在django1.11中,只支持正则匹配,并且方式是url() 在django2,3,4中,path()、re_path等价于url()
反向解析
1.在页面上直接写死很多路由,一旦路由发生变化会导致所有页面的相关链接失效,为了防止出现该问题,我们需要使用反向解析 '返回一个结果,该结果可以访问到对应的路径' 2.路由对应关系起别名 path('delete/', views.reg, name='reg_view') 3.使用反向解析语法 3.1html页面 {% ulr 'reg_view' %} 3.2后端 from django.shortcuts import reverse reverse('reg_view') '反向解析的操作其他三个方法都一样path()、re_path()、url()'
无名有名反向解析
路由 path('reg/<str:imfo>/', views.reg, name='reg_view') 当路由中有不确定的匹配因素是,反向解析时需要人为的给出一个具体的值 后端 reverse('reg_view', args=('barry',)) html页面 {% url 'reg_view' 'barry' %} '反向解析的操作其他三个方法都一样path()、re_path()、url()'
路由分支
1.django中的每个应用都可以有独自的urls.py文件夹、static文件夹 这样基于django开发多个应用可以完全独立,便于小组开发 2.总路由 path('app01/', include('app01.urls')), path('app02/', include('app02.urls')), 3.子路由 path('after/', views.after) # 这个是app01 path('after/', views.after) # 这个是app02
名称空间
'有路由分发场景下多个应用在涉及到反向解析别名冲突的时候无法正常解析' 方法1: patah('app01/', include(('app01.urls', 'app01'), namespace='app01')) patah('app02/', include(('app02.urls', 'app02'), namespace='app02')) 方法2: 别名不冲突即可eg:app01_reg_view、app02_reg_view
作业
使用分组、反向解析、路由分发完成用户数据增删改查
这篇关于路由匹配与解析的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行