【问题标题】:Why is "django.core.context_processors.request" not enabled by default?为什么默认不启用“django.core.context_processors.request”?
【发布时间】:2014-03-10 05:03:35
【问题描述】:

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

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

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

一些温和的搜索没有为我找到任何东西,但我想我会在这里问。

【问题讨论】:

    标签: python django django-1.6


    【解决方案1】:

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

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

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

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

    当然,这进一步证明了请求对象在模板中不是必需的,除非特殊用例。

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

    【讨论】:

    • 这很有意义。相比之下,其他核心上下文处理器似乎更加具体/无害。
    猜你喜欢
    • 1970-01-01
    • 2015-06-22
    • 2019-04-25
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多