Django的反向解析
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的反向解析的更多相关文章
- Django url反向解析与路由分发名称空间
url反向解析 url.py from django.conf.urls import url from django.contrib import admin from app01 import v ...
- Django【第2篇】:Django之反向解析
Django框架之第二篇 一.知识点回顾 1.MTV模型 model:模型,和数据库相关的 template:模板,存放html文件,模板语法(目的是将变量如何巧妙的嵌入到HTML页面中). view ...
- django之反向解析和命名空间
背景:当我们页面中存放的请求路径与url文件中的url一致时,如果url改了是不是所有的请求路径都要跟着改?显然不现实,这里我们就要用到反向解析. 如下图所示,输入url后会跳转到登录页面,输入用户名 ...
- Django 的反向解析与有无名分组
无名分组(将加括号的正则表达式匹配到的内容当做位置参数自动传递给对应的视图函数) url(r'^test/(\d+)/',views.test), # 匹配一个或多个数字 def test(reque ...
- Django正向解析和反向解析
转载:https://blog.csdn.net/jeekmary/article/details/79673867 先创建一个视图界面 urls.py index.html index页面加载的效果 ...
- django反向解析和正向解析
Django的正向解析和反向解析 先创建一个视图界面 urls.py index.html index页面加载的效果 正向解析 test/?result=1 所谓正向解析就是直接在这里写地址 向url ...
- Django之路由分发和反向解析
一.路由分发: 路由分发是指:总路由不再直接做路由与视图函数的对应关系,而是将获取的路由分发给下面的app去处理对应关系 from django.conf.urls import url,includ ...
- Django3 Django 路由分发,反向解析,2.0版本的path
urls配置像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于客户端发来的某个URL调用哪一段逻辑代码对应执行. 1.简 ...
- Django 反向解析
#1,定义: #随着功能的增加会出现更多的视图,可能之前配置的正则表达式不够准确,于是就要修改正则表达式,但是正则表达式一旦修改了,之前所有对应的超链接都要修改,真是一件麻烦的事情,而且可能还会漏掉一 ...
- django的url反向解析
目的:防止页面中url地址改变,其他与这个URL地址有关联的都要改,减少耦合度 使用:主要分为在html中和视图函数中的使用 HTML中的使用: 如果我们在项目的url文件中通过include导入了应 ...
随机推荐
- 使用Dapr和.NET 6.0进行微服务实战:Dapr简介
大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进. 本文是<使用Dapr和.NET 6.0进行微服务实战>的第2篇Dapr ...
- webpack打包后发现有一部分代码还携带注释,如何解决?/webpack打包删除注释以及console.log--快快点进来看一看吧~~
1.自己配置了一个webpack,打包后发现里边部分代码还存在注释,顿感不妙 废话不多说 解决如下: npm install terser-webpack-plugin --save-dev 然后在w ...
- 假如你想在VUE的main.js里根据条件按需引入注册组件以及样式,那就这样子写,附赠自己写的vue一个框架配置多系统按需加载系统路由以及组件办法
假如你想在VUE的main.js里根据条件按需引入注册组件以及样式,那就这样子写 举例来说我想要引入大屏的一些组件,但是原来框架已经集成了多个项目,路由也是按需加载的,想要实现组件按需加载 先在mai ...
- HashMap存储自定义类型键值-Linked Hash集合
HashMap存储自定义类型键值 练习∶每位学生(姓名,年龄)都有自己的家庭住址.那么,既然有对应关系,则将学生对象和家庭住址存储到map集合中.学生作为键,家庭住址作为值.注意,学生姓名相同并且年龄 ...
- 前端基础知识-html(一)个人学习记录
待补充 块级元素与行内元素,常见举例 html5新特性?
- php 虚拟目录
问题: 站点的root目录为 /data/web/ ,现在想在www.111.com 下放一个站点,www.111.com/abc/ 但不能直接在/data/web/下创建abc目录,要放在 /dat ...
- Sentry 后端云原生中间件实践 ClickHouse PaaS ,为 Snuba 事件分析引擎提供动力
目录(脑图) ClickHouse PaaS 云原生多租户平台(Altinity.Cloud) 官网:https://altinity.cloud PaaS 架构概览 设计一个拥有云原生编排能力.支持 ...
- Vue30 过度与动画
1 简介 Vue封装的过度与动画,插入.更新或者移除 DOM 时,在合适的时候给元素添加样式类名,达到应用过渡和动画效果. 2 vue内置的样式 Vue在元素显示与隐藏的过渡中,提供了 6 个 cla ...
- JAVA虚拟机10---内存分配策略
1.简介 对象的内存分配,从概念上讲,应该都是在堆上分配(而实际上也有可能经过即时编译后被拆散为标量类型并间接地在栈上分配).在经典分代的设计下,新生对象通常会分配在新生代中,少数情况下(例如对象大小 ...
- 图解论文《The Part-Time Parliament》
本文以图文并茂的方式重新演绎 Paxos 开山之作 <The Part-Time Parliament>[1],并尝试解释原论文中语焉不详的地方. 背景 在 Paxos 小岛上,施行着一种 ...