Django 知识库:reverse()路由解析

6536 views, 2020/05/10 updated   Go to Comments

假设已经有了这么一个路由:

path('foo/', some_view, name='foo_name'),

想从页面模板某处链接跳转到视图函数中就非常容易了,用如下模板语法:

<a href="{% url 'foo_name' %}">Jump</a>

现在问题来了,如果我想从视图函数中跳转到另一个视图函数该怎么办呢?这种情况是有可能发生的,比如某个视图会根据条件的不同而转换到不同的视图中去。

很简单,有现成的 redirect() 函数可使用:

return redirect('/foo/')

但是这样把 url 硬编码到代码里了,不美。更好的写法就要用到主角 reverse() 了:

return redirect(reverse('foo_name'))

这样写的好处是你可以任意更改 url 实际地址,只要路由的 name 不变,都是可以解析到正确的地址中去的。

带有参数的写法如下:

reverse('another_name', args=(id,))

因此带有参数的路由也可以正确解析了。简单又好用吧。

用之前记得导入:

from django.urls import reverse
from django.shortcuts import redirect



本文作者: 杜赛
发布时间: 2020年05月09日 - 16:55
最后更新: 2020年05月10日 - 21:40
转载请保留原文链接及作者