为什么默认情况下不启用“django.core.context_processors.request”?

时间:2014-03-10 05:03:36

标签: python django django-1.6

我正在解决使用新项目获取请求obj的问题,并意识到“django.core.context_processors.request”在Django的vanilla安装中得到了评论。

就像标题所示,为什么这个看似有用的上下文处理器默认关闭?

  • 这是性能问题吗?
  • 这是安全问题吗?
  • 有点多余吗?

一些温和的搜索对我来说没有任何结果,但我想我会在这里问。

1 个答案:

答案 0 :(得分:1)

这是一个很好的问题。文档说Note that this processor is not enabled by default; you’ll have to activate it.但没有解释。

我对它的看法是由于django强烈希望将视图逻辑与模板分开。

请求对象是构建视图逻辑的所有数据的网关(根据浏览器发送给我们的内容,执行X,Y,Z) - 因此在模板中允许它类似于为模板提供大量控制在正常情况下应放在视图中。我们的想法是使用细节填充模板上下文,而不是所有

删除它们只是鼓励“大多数事情应该在视图中完成”。如果默认情况下不需要,常见的django.contrib应用程序大多不依赖它。

当然,除了特殊用例之外,这进一步证明了模板中不需要请求对象。

无论如何,这是我的看法。