【发布时间】:2013-01-05 08:49:59
【问题描述】:
【问题讨论】:
-
用例:用户提交表单。处理表格;创建一个对象并将其添加到您的数据库中。您希望通过返回已创建对象的详细视图来响应。例如,这可以通过
return reverse(myDetailView, kwargs={'pk':self.object.pk})来完成。
标签: django django-urls
【问题讨论】:
return reverse(myDetailView, kwargs={'pk':self.object.pk}) 来完成。
标签: django django-urls
该函数支持dry principle - 确保您不会在整个应用程序中对网址进行硬编码。一个 url 应该在一个地方定义,而且只有一个地方 - 你的url conf。之后,您实际上只是在引用该信息。
使用reverse() 给你一个页面的url,给定视图的路径,或者你的url conf 中的page_name 参数。如果在模板中使用 {% url 'my-page' %} 执行此操作没有意义,则可以使用它。
您可以在很多地方使用此功能。我发现我使用它的一个地方是在视图中重定向用户时(通常在成功 processing of a form 之后)-
return HttpResponseRedirect(reverse('thanks-we-got-your-form-page'))
您也可以在编写模板标签时使用它。
我使用reverse() 的另一次是模型继承。我在父模型上有一个ListView,但想从这些父对象中的任何一个获取它的关联子对象的DetailView。我将一个get__child_url() 函数附加到父级,该函数识别出一个孩子的存在并使用reverse() 返回它的网址DetailView。
【讨论】:
django 中使用 reverse() 函数在您的视图中实现符合 DRY 的 url。 找到更清晰的解释here
【讨论】:
当您想通过名称解析视图以及代码中 URL 的参数时使用它。这是{% url %} template tag 的后端。
【讨论】: