Django的请求生命周期是指用户在浏览器访问网页时,Django根据网址在路由列表里查找相应的路由,在从路由里找到视图函数或视图类进行处理,将处理结果作为相应内容返回浏览器并生成网页内容。

这个生命周期是不可逆的,而在视图里使用路由这一过程被称为反向解析。

Django的反向解析主要有函数reverse 和resolve实现:函数reverse是通过路由命名或可调用视图对象来生成路由地址的;函数resolve是通过路由地址来获得路由对象信息的。

函数reverse的五个参数:

1、viewname:代表路由命名或可调用视图对象,一般情况下是以路由name来生成路由地址的。

2、urlconf: 设置反向解析的URLconf模块。默认情况下,使用配置文件setting.py的ROOT_URLCONF属性(主路由)。

3、args: 以列表方式传递路由地址变量,列表元素顺序和数量应与路由地址变量的顺序和数量一致。

4、kwargs: 以字典方式传递路由地址变量,字典的健必须对应路由地址变量名,字典的键值对数量与变量的数量一致。

5、current_app: 提示当前正在执行的视图所在的项目应用,主要起到提示作用,在功能上并无实质作用。

在Django里,所有路由地址皆以相对路径表示,地址路径首个斜杆“/”代表路由。

函数resolve的两个参数:

path:代表路由地址,通过路由地址来获取对应的路由对象信息。

urlconf:设置反向解析的URLconf模块。默认情况下,使用配置文件setting.py的ROOT_URLCONF属性。

函数resolve是以路由对象作为返回值的,该对象内置多种函数方法来获取具体的路由信息,

内置的函数方法
函数方法 说明
func 路由的视图函数对象或视图类对象
args 以列表格式获取路由的变量信息
kwargs 以字典格式获取路由的变量信息
url_name 获取路由命名name
app_name 获取路由函数include的参数arg的第二个元素值
app_names 与app_name功能一致,但以列表格式表示
namespace 获取路由命名空间namespace
namespaces 与namespace功能一致,但以列表格式表示
view_name 获取整个路由名称,包括命名空间

函数reverse和resolve主要是对路由进行反向解析,通过路由命名或路由地址来获取路由信息。在使用这两个函数的时候,需要注意两者所传入的参数类型和返回值的数据类型。

Django的反向解析的更多相关文章

  1. Django url反向解析与路由分发名称空间

    url反向解析 url.py from django.conf.urls import url from django.contrib import admin from app01 import v ...

  2. Django【第2篇】:Django之反向解析

    Django框架之第二篇 一.知识点回顾 1.MTV模型 model:模型,和数据库相关的 template:模板,存放html文件,模板语法(目的是将变量如何巧妙的嵌入到HTML页面中). view ...

  3. django之反向解析和命名空间

    背景:当我们页面中存放的请求路径与url文件中的url一致时,如果url改了是不是所有的请求路径都要跟着改?显然不现实,这里我们就要用到反向解析. 如下图所示,输入url后会跳转到登录页面,输入用户名 ...

  4. Django 的反向解析与有无名分组

    无名分组(将加括号的正则表达式匹配到的内容当做位置参数自动传递给对应的视图函数) url(r'^test/(\d+)/',views.test), # 匹配一个或多个数字 def test(reque ...

  5. Django正向解析和反向解析

    转载:https://blog.csdn.net/jeekmary/article/details/79673867 先创建一个视图界面 urls.py index.html index页面加载的效果 ...

  6. django反向解析和正向解析

    Django的正向解析和反向解析 先创建一个视图界面 urls.py index.html index页面加载的效果 正向解析 test/?result=1 所谓正向解析就是直接在这里写地址 向url ...

  7. Django之路由分发和反向解析

    一.路由分发: 路由分发是指:总路由不再直接做路由与视图函数的对应关系,而是将获取的路由分发给下面的app去处理对应关系 from django.conf.urls import url,includ ...

  8. Django3 Django 路由分发,反向解析,2.0版本的path

    urls配置像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于客户端发来的某个URL调用哪一段逻辑代码对应执行. 1.简 ...

  9. Django 反向解析

    #1,定义: #随着功能的增加会出现更多的视图,可能之前配置的正则表达式不够准确,于是就要修改正则表达式,但是正则表达式一旦修改了,之前所有对应的超链接都要修改,真是一件麻烦的事情,而且可能还会漏掉一 ...

  10. django的url反向解析

    目的:防止页面中url地址改变,其他与这个URL地址有关联的都要改,减少耦合度 使用:主要分为在html中和视图函数中的使用 HTML中的使用: 如果我们在项目的url文件中通过include导入了应 ...

随机推荐

  1. Echarts点击多组数据多个柱子中的一个柱子,获取当前点击的是第几组数据,并获取点击的是当前组别第几根柱子,以及对应横坐标,

    遇到一需求,一般都是点击图后获取其中一组数据就可以了,不需要详细到获取点击了当前X轴对应的其中的哪个, 今天的需求是 Echarts点击多组数据多个柱子中的一个柱子,获取当前点击的是第几组数据,并获取 ...

  2. Java 进阶P-3.5+P-3.6

    对象数组的for-each循环 for-each是用于遍历数组的另一种形式的for循环.for-each循环显着减少了代码,并且循环中没有使用索引或计数器. 句法: For(<数组/列表的数据类 ...

  3. Avalonia 实现动态托盘

    先下载一个gif图片,这里提供一个gif图片示例 在线GIF图片帧拆分工具 - UU在线工具 (uutool.cn) 使用这个网站将gif切成单张图片 创建一个Avalonia MVVM的项目,将图片 ...

  4. VS保存后Unity不刷新

    目录 问题:Visual Studio写完代码保存好,Unity不会重新编译 三种解决方案 1.先选为默认.重启Unity.更改为想要的代码编写软件. 2.查看Auto Refresh是否开启 3. ...

  5. VS针对Linux远程调试步骤

    VS2019下对于远程Linux下C++代码的调试 VS2017后新增了对跨平台代码的编写,编译和调试的功能,2019后更是新增了多种插件,以下是针对C++版本的linux环境代码调试 准备工作 安装 ...

  6. Ubuntu玩机记录,让我破电脑又飞起来了

    写在前面 很早之前的电脑ThinkPad E440,一直没怎么用.最近整理了一下电脑的资料,全部备份到云盘.整理的过程感觉电脑很慢很慢,难受极了.整理完后,终于我要对它下手了! 我制作了启动U盘,把U ...

  7. Android第六次作业

    图片一 用内部存储实现文件写入和读取功能 <?xml version="1.0" encoding="utf-8"?> <LinearLayo ...

  8. Vue 3项目如何设置全局变量

  9. Cheat Engine 中文设置汉化教程

    下载地址:https://www.cheatengine.org/downloads.php 下载windows 安装版本以及中文翻译包: 1.安装程序:一路NEXT即可 2.打开程序安装位置在在文件 ...

  10. Python绘制神经网络模型图

      本文介绍基于Python语言,对神经网络模型的结构进行可视化绘图的方法.   最近需要进行神经网络结构模型的可视化绘图工作.查阅多种方法后,看到很多方法都比较麻烦,例如单纯利用graphviz模块 ...