django请求生命周期流程图 路由匹配 无名分组 有名分组 反向解析 无名有名反向解析 路由分发 名称空间

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

在这里插入图片描述

二:路由匹配

1.原理
  • 一旦网址后缀匹配上,就会自动执行后面的函数,并结束整个路由匹配
path('网址后缀',函数名)
path('index/', views.index)
2.关于路由结尾的斜杠
  • 默认情况下不写斜杠,django会自动重定向到有斜杠的路径
  • 如何取消django自动匹配斜杠? 在配置文件中加上:APPEND_SLASH=False
3.path转换器
  • 1.什么时候用转换器?当网址后缀不固定的时候 可以使用转换器来匹配
  • 2.如何写path转换器
path('login/<int:year>/<str:desc>/', views.login)
  • 3.视图函数
  • 转换器匹配到的内容会以关键字参数的形式传给视图函数
def login(request, year, desc):
  • 4.转换器分类
# 常用
'int': IntConverter(),
'str': StringConverter(),
 
# 不常用
'path': PathConverter(),
'slug': SlugConverter(),
'uuid': UUIDConverter(),
4.re_path正则匹配

1.django2.x及以上的版本中默认的路由是path,所以re_path需要自己手动导入

from django.urls import re_path

2.如何书写re_path路由

re_path(正则表达式,函数名)
re_path('^test/$', views.test)

3.匹配原理:一旦网址后缀的正则能够匹配到浏览器端输入的内容,就会自动执行后面的函数,并结束整个路由匹配

5.无名分组

1.书写

re_path('^home/(\d+)/(.*?)/', views.home)

2.视图函数:正则表达式匹配到的内容会以位置参数的形式传给视图函数

def home(request, a, b)
6.有名分组

1.书写

re_path('^test1/(?P<year>\d+)/(?P<others>.*?)/')

2.视图函数:正则表达式匹配到的内容会以关键字参数的形式传给视图函数

def test1(request, a, b)
7.django不同版本中路由匹配的区别

1.django1.x版本中,只支持正则匹配,只有url( )方法

2.django2,3,4 版本中,默认的是path方法,re_path( )方法和django1.x版本中的url( )方法一样

三:反向解析

反向解析的操作三个方法都一样path() re_path() url()

1.引入反向解析

由于页面上提前写死了很多路由,一旦路由发生变化,会导致所有的页面相关链接失效,为了防止该问题的出现,需要反向解析

2.反向解析定义:

返回一个结果,该结果可以访问到对应的路由

3.路由对应关系起别名
path(<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值