Django 知识库:reverse()路由解析
6860 views, 2023/10/16 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