答案 0 :(得分:5)
该功能支持dry principle - 确保您不会在整个应用中硬编码网址。网址应该在一个地方定义,而且只能在一个地方定义 - 您的url conf。之后你真的只是引用那个信息。
使用reverse()
为您提供网页的网址,给定视图的路径或网址配置中的page_name
参数。如果在使用{% url 'my-page' %}
的模板中进行此操作没有意义,您可以使用它。
您可能有很多可能使用此功能的地方。我发现我使用它的一个地方是在视图中重定向用户(通常在成功processing of a form之后) -
return HttpResponseRedirect(reverse('thanks-we-got-your-form-page'))
在编写模板标签时也可以使用它。
我使用reverse()
的另一个时间是模型继承。我在父模型上有一个ListView
,但是希望从这些父对象中的任何一个获取它的相关子对象的DetailView
。我将一个get__child_url()
函数附加到父级,该父级确定了一个孩子的存在,并使用DetailView
返回了它的网址reverse()
。
答案 1 :(得分:3)
在django中使用reverse()函数在视图中实现符合DRY的URL。 找到更清晰的解释here
答案 2 :(得分:2)
当您想要按名称解析视图以及代码中的URL参数时,可以使用它。它是{% url %}
template tag的后端。