首页 > 编程语言 >进入python的世界_day50_Django之路由层——路由匹配、反向解析

进入python的世界_day50_Django之路由层——路由匹配、反向解析

时间:2022-12-12 21:45:06浏览次数:43  
标签:匹配 views python 视图 Django test path 路由

一、django请求生命周期流程图

学习流程:

​ 路由层、视图层、模板层、模型层、组件(插件、中间件)、BBS项目

二、路由匹配

1.path转换器

# path('网址后缀',视图函数名)
一旦网址后缀匹配上了就会自动执行后面的视图函数
并结束整个路由的匹配

# 路由中以斜杠结尾
默认情况下不写斜杠 django会作第二次处理
第一次匹配不上 会让浏览器加上浏览器斜杠再次请求
如果想让django不作这个二次处理,去settings里加上#  APPEND_SLASH = False

# path转换器
当网址后缀不固定的时候 可以使用转换器来匹配
# django2.X及以上版本路由动态匹配有转换器(五种)
'int':Intconverter(), 匹配 整型  (常用)
'path':PathConverter(), 匹配 所有字符
'slug':SlugConverter(), 英文字符中的斜杠 下划线 或数字
'str':StringConverter(), 匹配字符串  (常用)
'uuid':UUIDConverter(), 匹配 满足uuid形式字符串   

转换器匹配到的内容会当作视图函数的关键字 参数传入
path('func/<int:year>/<str:info>/', views.func)

转换器有几个叫什么名字 那么视图函数的形参必须对应
def func(request,year,info):
    pass

2.re_path正则匹配

​ 先导入一下正则模块

from django.urls import path,re_path
# re_path(正则表达式,函数名)  # 这个是2.x以上版本的django带的,1.x是url()
一旦网址后缀的正则能够匹配到内容 就会自动执行后面的函数
并结束整个路由层的匹配,无论输入的路由正确的正则内容后跟着啥,都无所谓

re_path('^test/$',views.test) # 这个就正则固定死了

re_path('^test/\d{4}/',views.test) # 必须是test/四个数字/

# 正则匹配之无名分组
正则表达式匹配到的内容会当作视图函数的位置参数传递给视图函数
re_path('^test/(\d+)/',views.test)
比如 re_path('^test/(\d{5})/(.*?)/', views.test)  # views的test要加上两个位置参数(随意叫啥,但是坑必须挖上)

# 正则匹配之有名分组
正则表达式匹配到的内容会当作视图函数的关键字参数 传递给视图函数
re_path('^test/(?P<year>\d+)/(?P<other>.*?)/',views.test)
# views的test要加上两个位置参数(必须按照分组的别名追加关键字参数)


# 注意,正则的有名无名不能二者混用!!!!!!!!!!!

三、反向解析

​ 是一门技术,页面上提前写死了很多路由 一旦路由发送变化会导致所有页面相关链接失效,为了做到解耦合, 我们需要使用反向解析

# 反向解析:根据别名返回一个结果 该结果可以访问到对应的路由

1.路由对应关系起别名
path('login',views.login,name='xxx_view')
2.使用反向解析
# 先去html页面 {% url 'xxx_view' %}
# 再去后端 先导一下reverse模块,然后去视图函数里reverse('xxx_view')就可以拿到对应的路由

动态路由的反向解析

path('func1/<str:others>/', views.func1_func, name='func1_view')
 	html页面上模板语法 {% url 'func1_view' 'jason' %}
 	后端语法		  reverse('func1_view', args=('嘿嘿嘿',))

标签:匹配,views,python,视图,Django,test,path,路由
From: https://www.cnblogs.com/wznn125ml/p/16977162.html

相关文章

  • django路由层
    django请求生命周期流程图django路由层1.路由匹配django1.X版本路由的第一个参数是正则表达式django2.X及以上版本的则是path写什么就匹配什么#无论什......
  • django 可视化界面
    可视化界面之数据增删改查针对数据对象主键字段的获取可以使用更加方便的obj.pk获取在模型类中定义双下str方法可以在数据对象被执行打印操作的时候方便的查看'''for......
  • Python Web开发一:Web开发简介
    PythonWeb开发一:Web开发简介​​一、背景知识​​​​二、前端开发和后端开发要做什么​​​​1.Web前端开发​​​​1.1html文件​​​​1.2CSS​​​​1.3资源文件​​......
  • 1行Python代码,合并100个Excel文件,原来这么方便?
    大家好,这里是程序员晚枫。今天开源项目​​python-office​​发布了一个新功能:1行代码,合并你指定的多个Excel文件。本文给大家详细介绍一下~需求说明有一位老师,现在有全校1......
  • 总结Python设置Excel单元格样式的一切,比官方文档还详细
    OverridetheentrypointofanimageIntroducedinGitLabandGitLabRunner9.4.Readmoreaboutthe extendedconfigurationoptions.Beforeexplainingtheav......
  • Django框架3
    今日内容概要django请求生命周期流程图django路由层反向解析今日内容详细django请求生命周期流程图学习流程 路由层、视图层、模板层、模型层、组件、BBS项目d......
  • django-路由层详解
    django-路由层详解可视化界面之数据增删改查针对数据对象主键字段的获取可以使用更加方便的obj.pk获取在模型类中定义双下str方法可以在数据对象被执行打印操作的时候......
  • Django框架:路由层
    目录Django中的路由层一、可视化界面之增删改查1.数据展示2.数据的添加功能3.数据的编辑功能4.数据的删除功能二、Django请求生命周期流程图1.web服务网关接口2.整个Django......
  • python-miio 入门
    一、获取ip和tooken转载链接:https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor二、基础通信转载链接:https://github.com/rytilahti/python-miio/iss......
  • 可视化界面之数据增删改查、django请求生命周期流程图、django路由层、反向解析
    可视化界面之数据增删改查针对数据对象主键字段的获取可以使用更加方便的obj.pk获取在模型类中定义双下str方法可以在数据对象被执行打印操作的时候方便的查看'''for......