首页 > 其他分享 >【Django】第03回 生命周期、路由匹配、反向解析、名称空间

【Django】第03回 生命周期、路由匹配、反向解析、名称空间

时间:2022-09-01 23:36:25浏览次数:78  
标签:03 匹配 Django 反向 path 解析 reg 路由

目录

1. 用户数据的增删改查

详情链接:https://www.cnblogs.com/cainiaozhy/p/16647597.html

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

3. 路由匹配

3.1 path斜杠

1.path

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

2.路由结尾的斜杠

1. 默认情况下不写斜杠,django会做二次出处理
   第一次匹配不上,会让浏览器加斜杠再次请求
2. django配置文件中可以指定是否自动加斜杠
   控制结尾是否加斜杠:APPEND_SLASH = False

3.2 path转换器

1.path转换器流程

1.当网址后缀不固定的时候 可以使用转换器来匹配
2.第一个前缀必须是func已经写死
3.第二个没有写死,可以写任何数字,如果不是数字,则会提示没有这样的后缀
4.转换器匹配到的内容会当做视图函数的关键字参数传入func(request,year=int(后缀))
5.转换器有几个叫什么名字 那么视图函数的形参必须对应,eg:def func(request,year,info):

2.path五种转换器

str:  StringConverter(), 匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
int:  IntConverter(),    匹配正整数,包括0
slug: SlugConverter(),   匹配字母、数字、下划线以及横杠组成的字符串
uuid: UUIDConverter(),   匹配格式化的uuid,如 194d3-685-47e-a8a8-6c931e272f00
path: PathConverter(),   匹配任何非空字符串,包含了路径分隔符(/),不能用"?"

3.3 正则匹配无名分组、有名分组

1.re_path正则匹配

结构:re_path(正则表达式,函数体)
特点:一旦网址后缀的正则能够匹配到内容就会自动执行后面的函数,并结束整个路由的匹配 
限制开头结尾:re_path('^test/$', views.test)
当网址后缀不固定的时候 可以使用转换器来匹配

2.正则匹配之无名分组

re_path('^test/(\d+)/(.*?)/', views.test)
正则表达式匹配到的内容会当做视图函数的位置参数传递给视图函数

3.正则匹配之有名分组

re_path('^test/(?P<year>\d+)/(?P<others>.*?)/', views.test)
正则表达式匹配到的内容会当做视图函数的关键字参数传递给视图函数

4.django版本区别

1.在django1.11中 只支持正则匹配 并且方法是 url()
2.django2,3,4中  path()  re_path() 等价于 url()

4. 反向解析

4.1 反向解析语法

应用:页面上提前写死了很多路由 一旦路由发送变化会导致所有页面相关链接失效。
解决:为了防止出现该问题 我们需要使用反向解析
定义:返回一个结果 该结果可以访问到对应的路由

1.路由对应关系起别名
  path('register/', views.reg, name='reg_view')
2.使用反向解析语法
  html页面: {% url 'reg_view' %}
  后端:from django.shortcuts import reverse
       reverse('reg_view')
ps:反向解析的操作三个方法都一样path() re_path() url()

4.2 无名有名反向解析

urls.py:   path('reg/<str:info>/', views.reg, name='reg_view')
当路由中有不确定的匹配因素 反向解析的时候需要人为给出一个具体的值
views.py:  reverse('reg_view', args=('jason',))
html:      {% url 'reg_view' 'jason' %}
ps:反向解析的操作三个方法都一样path() re_path() url()

5. 路由分发

特点:django中的应用都可以有自己独立的,urls.py templates文件夹,static文件夹
应用:能够让基于django开发的多个应用完全独立,当项目特别大,应用特别多的时候,可以使用路由分发,非常方便,便于小组开发,
总路由:
      path('app01/', include('app01.urls')),
      path('app02/', include('app02.urls')),
分路由:
      path('after/', views.after)  # app01
      path('after/', views.after)  # app02

6. 名称空间

有路由分发场景下多个应用在涉及到反向解析别名冲突的时候无法正常解析
解决方式1
	名称空间 namespace
        path('app01/', include(('app01.urls', 'app01'), namespace='app01'))
        path('app01/', include(('app01.urls', 'app02'), namespace='app02'))
解决方式2
	别名不冲突即可

标签:03,匹配,Django,反向,path,解析,reg,路由
From: https://www.cnblogs.com/cainiaozhy/p/16648194.html

相关文章

  • 【django学习-07】视图之HttpResponse
    前言:视图函数通过return方式返回响应数据,然后生成响应的网页内容呈现在浏览器上。视图函数主要有两种返回数据的方法HttpResponse:直接返回数据到浏览器上,不能使用模......
  • django路由匹配、反向解析、无名有名反向解析、路由分发、名称空间
    目录django请求生命周期流程图1.Django请求的生命周期的含义2.Django请求的生命周期图解及流程3.Django的请求生命周期(分布解析)路由层1.路由匹配2.path转换器3.re_path正则......
  • 今日内容 django路由匹配,分组,分发和反向解析
    django请求生命周期流程图浏览器     发送请求(HTTP协议)web服务网关接口:1、请求来的时候解析封装    响应走的时候打包处理2、django默认的wsgi......
  • envi5.3打开失败JSON_PARSE: Invalid string, no closing '"'
    发现破解好的ENVI5.3崩溃了,错误如下: ---------------------------Warning---------------------------JSON_PARSE:Invalidstring,noclosing'"'---------------......
  • django框架-3
    目录小练习django请求生命周期流程图路由匹配反向解析无名有名反向解析路由分发名称空间9.1小练习小练习作业题:用django编写用户数据的增删改查自己写这道题整理的一......
  • linux shell中'',""和``的区别
    linuxshell中'',""和``的区别-XuFeng-博客园 https://www.cnblogs.com/Skyar/p/5914942.html今天学习一个bash脚本,看到有一条:bin=`dirname"$0"`(dirnamefilenam......
  • django框架-04
    目录用户信息编辑django请求生命周期流程图django路由匹配反向解析反向解析有名无名反向解析路由分发名称空间用户信息编辑用户管理系统(单表) 1.配置文件 2.模型类......
  • Django之路由层
    django请求周期生命流程图django的生命周期是从用户发送HTTP请求数据到网站响应的过程。整个过程的流程包括:浏览器发送HTTP请求——>wsgiref服务——>中间件—......
  • django3/路由层小知识
    Django请求声明周期流程图路由匹配反向解析无名有名反向解析路由分发名称空间django请求生命周期流程图浏览器默认基于HTTP协议访问web服务网关接口(WebServerGa......
  • Django请求生命周期与反向解析
    Django请求生命周期与反向解析Django请求生命周期流程图Django路由匹配(多版本)1.路由 path('网址后缀',函数名(类名)) 一旦网址后缀匹配上了就会自动执行后面的函数......