Py学习  »  Django

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

FullStack程序猿 • 3 年前 • 463 次点击  

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

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

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

  1. href="{% url 'foo_name' %}">Jump

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

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

  1. return redirect('/foo/')

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

  1. return redirect(reverse('foo_name'))

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

带有参数的写法如下:

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

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

用之前记得导入:

  1. from django.urls import reverse

  2. from django.shortcuts import redirect


?time=1589299236.09
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/62816
 
463 次点击