首页 > 其他分享 >Django-路由层、反向解析

Django-路由层、反向解析

时间:2022-12-12 22:33:26浏览次数:47  
标签:index 匹配 views Django 反向 test path 路由

1.Django请求生命周期流程图

1.路由层、视图层、模板层、模型层、组件、BBS项目

2.django路由层

1.路由匹配:
'''当我们输入一个地址时,接口后面的/不用输入,也可以自动跳转'''
	django2.X以上版本,path第一个参数末尾可以不加/,django也会自动补全该接口。
	django1.X版本:第一个参数是正则表达式,无法补全。
	如果想取消django2.X以上版本的自动补全功能,需要在settings.py中加入:APPEND_SLASH = False。

2.转换器:
'''正常情况下很多网站都会有很多相似的网址,如果我们每一个都单独开发开设路由不合理'''
	2.1当我们想在接口后面继续增加一个后缀时,我们可以在接口后面加上/<str:info>/,比如:path('index/<str:a>/', views.index)表示index/后面两个/之间输入任意字符串内容,该地址访问到的还是/index/地址,并且该字符串还能被index()函数接收到。index函数有两个参数:index(request,a),这个a表示的就是index/后面接收到的字符串(可以带数字)。
# 1

	2.2/<int:num>/:匹配0或者任意正整数。
# 2 3

	2.3其他匹配内容:
		slug:匹配任意一个由字母或数字组成的字符串。
		uuid:匹配格式化后的UUID。
		path:能够匹配完整的URL路径
		ps:还支持自定义转换器(自己写正则表达式匹配更加细化的内容)
            
3.正则匹配:
	django2.X以上版本可以通过正则来匹配,需要提前导入模块re_path,第一个参数是正则。当我们在urls中写入一个接口,第一个参数只要能通过正则匹配到地址栏输入的接口,那么就可以匹配到该接口对应的功能能。
# 4 5
"""
但是不加任何符号匹配也有弊端,比如在urls中分别定义一个'test'和'testadd'的接口(test接口在上),那么我们能在地址栏输入/testadd/时,通过正则从上到下首先匹配到的是'test',所以我们匹配到的是test对应的功能,然后结束路由层的匹配,直接执行视图函数。想要解决该问题可以将接口改为re_path('test/', views.test)。或者是加上正则筛选条件:
urlpatterns = [
    re_path('^test/$', views.test),
    re_path('^testadd/$',views.testadd)
]
"""
# 6 7

4.正则匹配的无名有名分组:
	4.1无名分组:re_path('test/(\d{4})/',views.test),会将括号内的正则匹配到的内容当做位置参数传递给视图函数。
# 8 9
	4.2有名分组:re_path('func/(?P<num>\d{4})/(?P<var>\d{4})',views.function),会将括号内的正则匹配到的内容当做关键字参数传递给视图函数,所以视图函数在定义形参时需要将request以外的形参定义成<>内的名字。
# 10 11

3.反向解析

反向解析:在a标签中,如果一个路由经常变化,那么我们可以通过一个名字反向解析出一个结果,该结果可以直接访问到某个对应的路由,而不通过路由访问。
    
1.路由关系起别名基本语法:
path('login/', views.login, name='login_view')
<a href="{% url 'login_view' %}">home界面</a>  # 点击home界面就可以直接访问到login/路由对应的功能

2.反向解析语法:
urls语法:path('login001/', views.login, name='login_view')
html页面上模板语法:<a href="{% url 'login_view' %}">home界面</a>
后端语法:reverse('login_view')
    
3.动态路由的反向解析
path('func1/<str:others>/', views.func1_func, name='func1_view')
html页面上模板语法:{% url 'func1_view' 'jason' %}
后端语法:reverse('func1_view', args=('嘿嘿嘿',))

标签:index,匹配,views,Django,反向,test,path,路由
From: https://www.cnblogs.com/zkz0206/p/16977305.html

相关文章

  • djiango路由匹配、djiango路由层、反向解析、有名无名反向解析
    djiango路由匹配、djiango路由层、反向解析、有名无名反向解析一、作业讲解(数据的增删改查)urls代码fromdjango.contribimportadminfromdjango.urlsimportpath......
  • django_应用及分布式路由
    一、应用的定义1、应用在Django中是一个独立的业务模块,可以包含自己的路由、视图、模板、模型。例如如下图所示,一个资讯类网站中会有不同的模块,如果所有的模......
  • Django之数据增删改查、Django请求生命周期流程图、Django路由层(路由匹配、转换器、正
    今日内容详细可视化界面之数据增删改查针对数据对象主键字段的获取可以使用更加方便的obj.pk获取在模型类中定义__str__方法可以在数据对象被执行打印操作的时候方......
  • django框架(部分讲解)
    可视化界面之数据增删改查小知识点:针对数据对象主键字段的获取可以使用更加方便的obj.pk获取在模型类中定义双下str方法可以在数据对象被执行打印操作的时候方便的查......
  • django之路由层
    django之路由层目录django之路由层可视化界面之数据增删改查django请求生命周期流程图django路由层反向解析可视化界面之数据增删改查数据对象主键字段的获取可以使用更......
  • django后端之路由层
    目录数据增删改查django请求生命周期流程图(*****)django路由层1.路由匹配2.正则匹配3.转换器4.正则匹配的无名有名分组反向解析基本使用动态路由的反向解析数据增删改查......
  • ORM增删改查 django请求生命周期图 django路由层及反向解析
    目录可视化界面之数据增删改查1.建表2.数据展示功能3.数据添加功能4.数据编辑功能5.数据删除功能django请求生命周期流程图django路由层1.路由匹配2.转换器功能path3.正则......
  • python之路47 django路由配置
    可视化界面之数据增删改查针对数据对象主键字段的获取可以使用更加方便的obj.pk获取在模型类中定义双下str方法可以在数据对象被执行打印操作的时候方便的查看'''form......
  • django之路由层
    django之路由层路由层,主要是路由地址与视图函数的映射关系,如果将网站比作一本书,那么路由就相当于这本书的目录。路由匹配在目前的主流版本2.x及以上版本中,我们默认......
  • 进入python的世界_day50_Django之路由层——路由匹配、反向解析
    一、django请求生命周期流程图学习流程:​ 路由层、视图层、模板层、模型层、组件(插件、中间件)、BBS项目二、路由匹配1.path转换器#path('网址后缀',视图函数名)一旦......