Django学习——路由层之路由匹配、无名分组、有名分组、反向解析
2022-04-28 22:27
1576 查看
路由层之路由匹配
"""路由你可以看成就是出去ip和port之后的地址""" url()方法 1.第一个参数其实是一个正则表达式 2.一旦第一个参数匹配到了内容直接结束匹配 执行对应的视图函数 url(r'^test/$',views.test),
无名分组
url(r'^test/\d+/$',views.test), # 正则表达式分组:给正则表达式前后加一个小括号 url(r'^test/(\d+)/$',views.test), """ 无名分组 将括号内正则表达式匹配到的内容当做位置参数传递给后面的视图函数 """
有名分组
正则表达式可以起别名
url(r'^testadd/(?P<id>\d+)/$',views.testadd), """ 有名分组 将括号内正则表达式匹配到的内容当做关键字参数传递给后面的视图函数 """
是否可以结合使用
url(r'^test1/(\d+)/(?P<id>\d+)/$',views.test1), 1.无名有名分组不能混合使用 url(r'^test2/(\d+)/(\d+)/$',views.test2), url(r'^test3/(?P<id>\d+)/(?P<id1>\d+)/$',views.test3), 2.可以单个重复使用
反向解析
当路由频繁变化的时候,HTML界面上的链接地址如何做到动态解析 # 1.给路由与视图函数对应关系添加一个别名(名字自己指定 只有不冲突即可) url(r'^index/', views.index,name='index_name'), # 2.根据该别名动态解析出一个结果,该结果可以直接访问到对应的路由 前端 <a href="{% url 'index_name' %}">111</a> 后端 from django.shortcuts import reverse reverse('index_name') ps:redirect括号内也可以直接写别名
无名有名反向解析
url(r'^index/(\d+)/', views.index,name='index_name'), 后端 reverse('index_name',args=(1,)) # args一般放数据的主键值 只要给个数字即可 前端 <a href="{% url 'index_name' 1 %}">111</a> # 只要给个数字即可 url(r'^index/(?P<id>\d+)/', views.index,name='index_name'), 后端 reverse('index_name',kwargs={'id':123}) # 只要给个数字即可 前端 <a href="{% url 'index_name' id=666 %}">4444</a> # 只要给个数字即可 总结 无名有名都可以使用一种(无名)反向解析的形式
内容回顾
- 数据库同步命令 inspectdb
- Django请求生命周期流程图 1.web服务网关接口 wsgiref uwsgi 2.灰色地带(Django中间件) 3.路由层 4.视图层 5.模板层 6.模型层
- 路由匹配 1.自动补全斜杠 APPEND_SLASH = True 2.url()方法 第一个参数是正则表达式 # 路由匹配特性:一旦正则能够匹配到内容则停止继续往下而是直接执行对应的功能
- 无名有名分组 无名分组 给正则表达式加上一个括号 url(r'index/(\d+)/',views.index) 执行视图函数的时候会将括号内匹配到的内容当做位置参数传递给视图函数 有名分组 给正则表达式加上一个括号并且起一个别名 url(r'index/(?P\d+)/',views.index) 执行视图函数的时候会将括号内匹配的内容当做关键字参数传递给视图函数 ps:两者不能混合使用,但是单独可以重复使用
- 反向解析 通过别名得到一个可以访问该别名对应的路由规则 1.起别名(不能冲突) url(r'index/',views.index,name='index_name') 2.反向解析 前端 {% url 'index_name' %} 后端 from django.shortcuts import reverse url = reverse('index_name')
- 无名有名反向解析 当路由出现无名有名分组反向解析需要传递额外的参数 url(r'index/(\d+)/',views.index,name='index_name') 前端 {% url 'index_name' 1 %} 后端 from django.shortcuts import reverse url = reverse('index_name',args=(1,)) ps:有名分组的反向解析也可以使用无名的方式 # 了解 url(r'index/(?P\d+)/',views.index,name='index_name') 前端 {% url 'index_name' 1 %} 后端 from django.shortcuts import reverse url = reverse('index_name',kwargs={'id':1})
相关文章推荐
- [Django框架之路由层匹配、有名 无名分组、反向解析、路由分发、名称空间、伪静态、本地虚拟环境、django版本区别]
- Django框架路由层-无名有名分组-无名有名分组反向解析
- 路由层、有名无名分组、反向解析、路由分发、名称空间与python虚拟环境创建
- Django的路由系统|URL配置、正则表达式、分组命名、命名空间、命名URL反向解析
- django学习日志(View视图)第一部分:视图语法:路由参数+反向解析
- 四、分组,反向解析、路由分发、名称空间、伪静态
- 三十八、python学习之Django框架(一):入门,介绍,设计模式,环境搭建,项目创建,基本配置,创建视图,静态文件,路由与反解析,App应用配置
- 关于django路由问题(路由分发 反向解析 命名空间)
- django学习日志(View视图)第二部分:视图语法:重定向+反向解析
- Python3之Django Web框架URL匹配、反向解析及部分错误处理
- Django url反向解析与路由分发名称空间
- Django之无名分组和有名分组的实现
- Django之无名分组,有名分组
- 详解JavaScript正则表达式之分组匹配及反向引用
- Django学习——setting.py源码解析与常用配置
- Django url的命名空间 url反向解析
- Django学习——路由分发、名称空间、伪静态、本地虚拟环境
- django学习——通过regroup方法对对象进行分组
- python解析之正则表达式,由浅入深带你轻松学会正则表达式(05分组匹配)
- ⾯包屑 利⽤$route.matched可得到路由匹配数组,按顺序解析可得路由层次关系。