在Django中提供了关于URL的映射的解决方案,可以做两个方向的使用
1.普通解析过程:由客户端的浏览器发起一个url请求,Django根据url解析,把url中的参数捕获,调用相应的视图,获取相应的数据,然后返回给客户端显示。
2.反向解析:通过一个视图的名字,再加上一些参数和值,逆向获取相应的url。简单来说,反向解析(本质)就是指通过一些方法,得到一个结果,该结果可以访问到对应的url并触发视图函数的运行
2. 什么是反向解析
我们知道每个视图函数都有一个和其相对应的路由,但是如果它们之间的匹配关系发生了变化,那么与之对应的访问地址也需要跟着发生改变,这是极其不方便的。因此我们可以用一种动态解析 url 的方法来避免。我们使用 Path 语法提供的 name 属性给对应路由起别名,从而让与之对应的链接或者跳转,会根据这个别名来动态解析 url,这个动态解析 url 路径的过程就是反向解析。
3. 反向解析的应用
• 在模板层使用
• 在视图函数的
• 在处理模型
上面我们使用 reverse 函数完成了视图函数的重定向,但是这里还要给大家简单介绍一下 reverse() 函数。在 Django中 reverse() 的定义如下所示:
reverse(viewname,urlcnotallow=None,args=None,kwargs=None,current_app=None)
它只有一个必填参数,其他都是可选参数。其中
•urlconf:这个属性用于决定当前的反向解析使用哪个 URLconf 模块,默认是根 URLconf;
•args:它用于传递参数,可以是元组或者列表,顺序填充 url 中的位置参数;
•kwargs:字典类型的传参,和 args 作用一样;
•current_app:它指定当前视图函数所在的 app,本例中是 index 应用。