我正在解决一个使用新项目获取请求 obj 的问题,并意识到“django.core.context_processors.request”在 Django 的 vanilla 安装中被评论。
就像标题所暗示的那样,为什么默认情况下会关闭这个看似有用的上下文处理器?
- 是性能问题吗?
- 是安全问题吗?
- 它在某种程度上是多余的吗?
一些温和的搜索对我来说没有任何发现,但我想我会在这里问。
我正在解决一个使用新项目获取请求 obj 的问题,并意识到“django.core.context_processors.request”在 Django 的 vanilla 安装中被评论。
就像标题所暗示的那样,为什么默认情况下会关闭这个看似有用的上下文处理器?
一些温和的搜索对我来说没有任何发现,但我想我会在这里问。
这是一个很好的问题。文档说Note that this processor is not enabled by default; you’ll have to activate it.
但没有解释。
我对此的看法是由于 django 强烈希望将视图逻辑与模板分开。
请求对象是构建视图逻辑的所有数据的网关(鉴于浏览器向我们发送的内容,执行 X、Y、Z) - 因此在模板中允许它类似于给予模板大量控制权,这应该是正常情况下放置在视图中。这个想法是用细节而不是一切来填充模板上下文。
删除它们只是“大多数事情应该在视图中完成”的更多鼓励。如果默认情况下不需要,常见的django.contrib
应用程序大多不依赖它。
当然,这进一步证明了请求对象在模板中不是必需的,除非特殊用例。
无论如何,这是我的看法。