我不知道何时在django.core.urlresolvers模块中使用reverse()

时间:2013-01-22 07:01:56

标签: django django-urls

我读完了Django URL调度程序的reverse()方法的documentation

什么时候有用?

谢谢!

3 个答案:

答案 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的后端。