django路由的反向解析
什么是路由的反向解析
我们的路由都是一个匹配关系,对应一个处理的视图函数,
如果我们的匹配关系发生了变化,那么与之对应的访问地址(可能前端直接url链接,
也可能是后端的redrict跳转)都需要跟着发生改变
这是费时费力,因此我们想到了一种动态解析url的方法,通过给相应
的匹配关系起别名,而让与之对应的链接或者跳转,会根据别名动态解析前面的匹配关系
这个动态解析url路径的过程就是反向解析
反向解析实现的方式
不传参反向解析
我们先给后端的匹配关系起一个别名,这个别名任意取名都可以
url(r'^test/', test, name='xxx')
1、前端实现
通过在链接处输入{% url '路由的别名xxx' %}
<a href="{% url 'xxx' %}"></a> <form action="{% url 'xxx' %}"></form>
2、后端实现
后端通过reverse('别名')
from django.shortcuts import redirect, reverse def tt(request): _url = reverse('xxx') return redirect(_url)
传参反向解析
上面说的都是函数不需要传参的,还有一种需要传参的路由匹配
url(r'testsas/(\d+)', test, name='xxx'),
1、前端实现
直接接着后面跟参数就行
<a href="{% url 'xxx' 1 %}"></a> <form action="{% url 'xxx' 9 %}"></form>
2、后端实现
在reverse中加入args参数,以元组形式传参
from django.shortcuts import redirect, reverse def tt(request): _url = reverse('xxx',args=(1,)) return redirect(_url)