Why is “django.core.context_processors.request” not enabled by default?

懵懂的女人 提交于 2020-01-01 05:37:18

问题


I was troubleshooting a problem with obtaining the request obj with a new project and realized "django.core.context_processors.request" was commented in vanilla installs of Django.

Like the title suggests, why would this seemingly helpful context processor be turned off by default?

  • Is it an issue with performance?
  • Is it an issue with security?
  • Is it somehow redundant?

Some mild searching has not turned up anything for me, but I thought I'd ask here.


回答1:


This is a good question. The docs say Note that this processor is not enabled by default; you’ll have to activate it. but no explanation.

My take on it is due to django's intense desire to separate view logic from the template.

The request object is the gateway to all data that view logic is built from (given what the browser sent us, do X, Y, Z) - therefore allowing it in the templates is akin to giving the template huge amounts of control which should be placed in the view under normal circumstances. The idea is to populate the template context with specifics, not everything.

Removing them is just some more encouragement that "most things should be done in the view". The common django.contrib apps mostly don't rely on it, if it's not required by default.

And of course, that's further proof the request object isn't necessary in the template except for special use cases.

That's my take, anyways.



来源:https://stackoverflow.com/questions/22292424/why-is-django-core-context-processors-request-not-enabled-by-default

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!