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

Bla*_*son 5 python django django-1.6

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

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

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

一些温和的搜索并没有为我提供任何东西,但我想我会在这里问.

Yuj*_*ita 1

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

\n\n

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

\n\n

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

\n\n

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

\n\n

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

\n\n

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

\n