擅长:python、mysql、java
<p>1)如果您修改了“设置”,这将是真正的全球,即使是跨请求。换言之,如果您需要每个请求都有自己的值,那么并发请求将相互攻击。更安全的做法是修改请求对象本身,这是一些常见的Django中间件所做的(例如Django.contrib.auth.middleware.AuthenticationMiddleware在请求对象上添加对“user”的引用)</p>
<p>2)(编辑2)参见#4,在每个模板中获取一组公共变量可能更适合于自定义上下文处理器</p>
<p>3)我不熟悉CakePHP,但是添加process_请求中间件绝对是预处理每个请求的好方法。</p>
<p>4)查看文档中的<a href="http://docs.djangoproject.com/en/dev/ref/templates/api/?from=olddocs#id1" rel="nofollow noreferrer">template context processors</a>。如果使用request context,则每个模板都有一个名为“request”的上下文变量,可以将其转储到模板中。您还可以使用调试上下文处理器并执行类似的操作,以便它仅在设置为.debug=True时转储:</p>
<pre><code>{% if debug %}
<!-- {{ request.REQUEST }} -->
{% endif %}
</code></pre>
<p>这对GET和POST都有效,但如果只需要其中一个,则可以相应地进行修改。</p>
<p><strong>编辑</strong></p>
<p>另外,我只是仔细看了看你的观点。我不确定我是否完全理解您仅仅通过返回响应中的变量来尝试执行的操作。如果您真的有这个用例,您可能还需要设置mimetype,如下所示:</p>
<pre><code>return HttpResponse (..., mimetype='text/plain')
</code></pre>
<p>这只是为了表明您没有返回HTML、XML或其他结构化内容类型。</p>
<p><strong>编辑2</strong></p>
<p>刚刚看到问题更新了一个新的子问题,重新编号的答案</p>