当我有时阅读Django代码时,我在一些模板中看到了reverse()
。我不太确定这是什么,但它与HttpResponseRedirect一起使用。这个reverse()
应该如何使用,什么时候使用?
发布于 2019-10-22 17:40:55
现有的答案是相当清楚的。以防您不知道它为什么被称为reverse
:它接受url名称的输入,并给出实际的url,这与先有一个url,然后再给它一个名称是相反的。
发布于 2016-04-09 10:25:33
该函数支持dry原则-确保您不会在整个应用程序中硬编码urls。一个url应该定义在一个地方,并且只有一个地方-你的url conf。在那之后,你真的只是参考了这些信息。
在给定视图路径或url配置文件中的page_name参数的情况下,使用reverse()
提供页面的url。在模板中使用{% url 'my-page' %}
没有意义的情况下,您可以使用它。
有很多地方你可能会用到这个功能。我发现我使用它的一个地方是在视图中重定向用户时(通常在成功处理表单之后)-
return HttpResponseRedirect(reverse('thanks-we-got-your-form-page'))
您也可以在编写模板标记时使用它。
我使用reverse()
的另一次是模型继承。我在父模型上有一个ListView,但是想要从这些父对象中的任何一个获取到它的相关子对象的DetailView。我将一个get__child_url()
函数附加到父对象上,该函数标识子对象的存在,并使用reverse()
返回其DetailView的url。
发布于 2012-06-28 17:35:01
有一个文档可以解决这个问题
https://docs.djangoproject.com/en/dev/topics/http/urls/#reverse-resolution-of-urls
它可用于为给定视图生成URL
主要优点是您不需要在代码中硬编码路由。
https://stackoverflow.com/questions/11241668
复制相似问题