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

cho*_*obo 1 django django-urls

我看完了文档reverse()Django的URL调度的方法.

什么时候有用?

谢谢!

Aid*_*wen 5

该功能支持干燥原则 - 确保您不会在整个应用程序中硬编码网址.网址应该在一个地方定义,而且只能在一个地方定义 - 您的网址.之后你真的只是引用那些信息.

使用reverse()给你给出一个路径,视图,或者页面的网址,page_name从您的网址设置参数.如果在模板中使用它没有意义,你可以使用它{% url 'my-page' %}.

您可以使用此功能的许多地方.我发现我使用它的一个地方是在视图中重定向用户(通常在成功处理表单之后) -

return HttpResponseRedirect(reverse('thanks-we-got-your-form-page'))
Run Code Online (Sandbox Code Playgroud)

您也可以在编写模板标签时使用它.

我用的另一次reverse()是模型继承.我有一个ListView父模型,但想从这些父对象中的任何一个获取DetailView它的相关子对象.我将一个get__child_url()函数附加到父项,该函数标识了子项的存在并返回了它的url DetailView使用reverse().