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)

 

posted @ 2019-08-01 21:09  hesujian  阅读(919)  评论(0编辑  收藏  举报