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

Posted

技术标签:

【中文标题】我不知道何时在 django.core.urlresolvers 模块中使用 reverse()【英文标题】:I don't know when to use reverse() in django.core.urlresolvers module 【发布时间】:2013-01-05 08:49:59 【问题描述】:

我读完了 Django URL 调度器的reverse() 方法的documentation。

什么时候有用?

谢谢!

【问题讨论】:

用例:用户提交表单。处理表格;创建一个对象并将其添加到您的数据库中。您希望通过返回已创建对象的详细视图来响应。例如,这可以通过return reverse(myDetailView, kwargs='pk':self.object.pk) 来完成。 【参考方案1】:

该函数支持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

【讨论】:

【参考方案2】:

django 中使用 reverse() 函数在您的视图中实现符合 DRY 的 url。 找到更清晰的解释here

【讨论】:

最好引用该站点的解释,然后引用它们作为来源,这样即使该站点出现故障,您的答案也可以在 SO 上完全可用。【参考方案3】:

当您想通过名称解析视图以及代码中 URL 的参数时使用它。这是% url % template tag 的后端。

【讨论】:

你能再解释一下吗? 真的没有什么好解释的了。您会知道何时需要它。

以上是关于我不知道何时在 django.core.urlresolvers 模块中使用 reverse()的主要内容,如果未能解决你的问题,请参考以下文章

如何知道 OWIN cookie 何时到期?

如何知道所有 Promise 何时在动态“可迭代”参数中得到解决?

如何知道大 O 何时是对数?

CoreLocation:知道用户何时没有移动 n 分钟

viewController 如何知道应用程序何时刚刚完成启动?

如何知道 MPEG DASH 中的实时流媒体何时结束?