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

 

posted @ 2020-05-20 10:31  水中月-幻  阅读(486)  评论(0编辑  收藏  举报