首页 > 其他分享 >Django路由层的匹配

Django路由层的匹配

时间:2022-12-12 20:44:08浏览次数:41  
标签:匹配 请求 视图 Django 分组 路由

前日内容回顾

  • 静态文件的配置

    页面中不需要经常修改的内容(样式、脚本、图片等)采用静态文件的方式保存,需要在Django的配置文件中注册相应的文件地址。

  • request对象方法

    request是客户端访问服务端需要发送的一系列信息。request两个重要参数:action及method。

    action是客户端发送请求的地址,不写默认为当前页面。

    method是发送请求的分类,一种是索要数据(get),另一种是给予数据(post)。

  • pycharm连接MySQL

    选择database,下载相关驱动,即可访问MySQL数据库。

  • Django连接MySQL

    Django默认使用sqlite3数据库,容量和功能较少,仅用于基础测试。

    Django使用MySQL数据库需要在settings中的database的默认值,修改ENGINE对应值,并填入数据库名、地址、端口、用户民、密码等。

    Django连接MySQL需要安装MySQL客户端,使用 pip install mysqlclient 命令行安装。

  • Django模型层简介

    模型层主要是存放操作数据库的方法。Django操作数据库一般通过ORM(Object Relational Mapping,对象关系映射)操作,通过封装固定的语句与SQL语句的对应关系,实现ORM语句操作数据库。

    注意在Django中修改了数据库的相关的代码之后都需要进行数据的迁移,迁移是为了保证ORM语句运行。

今日内容概要

  • Django请求生命周期
  • Django路由层的匹配
    • 普通匹配
    • 动态匹配
    • 反向解析

今日内容详细

Django请求生命周期

与一条请求相关的模块有以下几部分:

  1. 网络服务接口框架,该框架会对请求进行封装,然后基于网络发送;
  2. 跨站请求伪造检验,该模块会对请求进行检验,确保安全性之后发送给下一层级;
  3. 路由层,分析请求想要访问的页面,调用相关的功能函数;
  4. 视图层,处理请求,与模板层和模型层交互,返回处理完成的数据;
  5. 模板层,接收视图层关于页面的请求,返回相关页面;
  6. 模型层,接收视图层关于数据处理的请求,返回处理结果。

Django路由层的匹配

普通匹配

普通匹配即静态匹配,匹配指定的字符串,当没有匹配结果时,报404错误。

匹配时不会匹配"?"后传的额外参数。

默认网址以"/"结尾,当首次匹配检测到网址没有以"/"结尾时,会自动进行重定向操作,加上"/"再次匹配。

动态匹配

动态匹配包含两种形式,一种是转换器匹配,另一种是正则匹配。

转换器匹配

转换器匹配就是将网址中两个斜杠之间的字符串转换成指定数据格式,放入请求中发送给后端,在调用相关功能时作为关键字参数传入。使用格式为,<转换器名: 数据命名>。

转换器有五种:

str 匹配除路径分隔符外的任意非空字符串。
int 匹配0或者任意正整数。
slug 匹配任意一个由字母或数字组成的字符串。
uuid 匹配格式化后的UUID。
path 匹配完整的URL路径。

正则匹配 re_path

正则匹配就是在路由层匹配时用正则表达式代替固定的网址。一旦匹配到满足正则的数据就会执行对应功能。

若对正则匹配进行分组,则会将匹配结果作为参数传给后端。正则匹配的分组分为有名分组及无名分组,一条正则表达式中需要统一有名或无名。

有名分组 在分组时为分的组定义对应的名字,在传参时使用关键字传参。

无名分组 在分组时不定义名字,在传参时使用位置传参。

反向解析

由于动态匹配的结果多种多样,而对应的接口可能只有一个,因此需要使用动态解析为多个需要使用相同视图的路由匹配结果指定统一的视图接口。具体使用方法为:

在路由层匹配网址时,为对应视图功能定义指定的名字;
在页面上使用模板语法{% url '功能名' '参数' %};
在后端返回路由时使用 reverse('功能名',args=())

标签:匹配,请求,视图,Django,分组,路由
From: https://www.cnblogs.com/akazukis/p/16977053.html

相关文章

  • 可视化界面之数据增删改查、django请求生命周期流程图、django路由层、反向解析、
    目录可视化界面之数据增删改查django请求生命周期流程图django路由层反向解析可视化界面之数据增删改查针对数据对象主键字段的获取可以使用更加方便的obj.pk获取在模......
  • 可视化界面之数据增删改查、django请求生命周期流程图、django路由层、反向解析
    可视化界面之数据增删改查针对数据对象主键字段的获取可以使用更加方便的obj.pk获取在模型类中定义双下str方法可以在数据对象被执行打印操作的时候方便的查看'''for......
  • django 03 django路由层
    django请求生命周期流程图  django路由层#1.路由匹配django1.x第一个参数是正则表达式django2.x+path第一个参数写什么就匹配什么......
  • ORM数据增删改查 django请求生命周期 django路由层 反向解析
    目录可视化界面之数据增删改查补充1.建表2.数据展示功能3.数据添加功能4.数据编辑功能5.数据删除功能django请求生命周期流程图crsfwsgirel与uwsginginxdjango路由层1.路......
  • django之路由层
    django请求生命周期流程图特别注意:WSGI是协议,而wsgiref与uwsgi是基于WSGI协议实现的功能django路由层1.路由匹配 django2.x及以上 path第一个参数写什么就匹配什么......
  • django-rest framework
    目录(1)Web应用模式及API接口(2)Restful规范(3)drf安装和简单使用(4)源码分析(5)序列化器-Serializer(6)局部和全局响应配置(7)视图(8)路由-Routers(9)认证-Authentication(10)权......
  • 串的匹配模式
     //串的模式匹配//1.朴素的模式匹配算法intIndex1(charS[],charP[],intpos){//查找并返回串P在主串S中从pos位置开始的位置,否则返回-1inti,j,slen,pl......
  • BGP路由协议
    IGP和EGP路由协议通常分为内部网关协议(IGP:InteriorGatewayProtocol)和外部网关协议(EGP:ExteriorGatewayProtocol)两大类。一般来讲,IGP用于自治系统AS(AutonomousSys......
  • django之路由层和反向解析
    目录可视化界面之数据增删改查项目初始化步骤访问用户数据的接口数据添加django请求生命周期流程图django路由层反向解析可视化界面之数据增删改查项目初始化步骤1.创建......
  • 基于角色的权限控制(django内置的auth体系)
    #RBAC(Role-BasedAccessControl:基于角色的访问控制)#django的auth就是内置了一套RBAC的权限系统#django中 #后台权限控制(公司内部系统,crm客户关系管理,erp,协同平台)......