python – Django – 让中间件与视图/模板进行通信

栏目: Python · 发布时间: 5年前

内容简介:>这不是最好的方式.您可以在请求而不是设置上设置my_var.设置是全局的,适用于整个站点.您不希望为每个请求修改它.多个请求同时更新/读取变量可能会出现并发问题.>要在模板中访问request.my_var,您可以执行{{request.my_var}}.要访问模板中的请求变量,必须将django.core.context_processors.request添加到TEMPLATE_CONTEXT_PROCESSORS设置中.>是的.描述请求中间件的其他术语将是请求预处理器/过滤器/拦截器.
好吧,这可能是一个非常愚蠢的问题,但我是Python / Django的新手,所以我还不能真正地围绕它的范围概念.现在我正在写一个 middleware

类来处理一些东西,我想设置我的视图和模板可以访问的“全局”变量.这样做的“正确”方法是什么?我考虑做过这样的事情:

middleware.py

from django.conf import settings

class BeforeFilter(object):
    def process_request(self, request):
        settings.my_var = 'Hello World'
        return None

views.py

from django.conf import settings
from django.http import HttpResponse

def myview(request):
    return HttpResponse(settings.my_var)

虽然这有效,但我不确定它是“Django方式”还是“Python方式”.

所以,我的问题是:

这是正确的方法吗?

2.如果它是正确的方法,添加可以在中间件的实际模板中使用的变量的正确方法是什么?假设我想评估一些内容,并且我想在中间件中将变量headername设置为“我的站点名称”,并且我希望能够在所有模板中执行{{headername}}.按照我现在的方式做它我必须在每个视图中的上下文中添加headername.反正有没有绕过这个?我在思考CakePHP的$this-> set(‘headername’,’我的网站名’);

3.我使用中间件类作为CakePHP的beforeFilter的等价物,它在每个视图(或CakePHP中的控制器)被调用之前运行.这是正确的做法吗?

4.完全不相关,但这是一个小问题,将一个变量的内容打印到浏览器ala print_r的好方法是什么?假设我想查看传递给视图的请求中的所有内容?是pprint的答案吗?

>这不是最好的方式.您可以在请求而不是设置上设置my_var.设置是全局的,适用于整个站点.您不希望为每个请求修改它.多个请求同时更新/读取变量可能会出现并发问题.

>要在模板中访问request.my_var,您可以执行{{request.my_var}}.要访问模板中的请求变量,必须将django.core.context_processors.request添加到TEMPLATE_CONTEXT_PROCESSORS设置中.

>是的.描述请求中间件的其他术语将是请求预处理器/过滤器/拦截器.

此外,如果要在模板中使用标题的常用站点名称,您可能需要查看Django站点应用程序,该应用程序提供了一个站点名称变量供您使用.

翻译自:https://stackoverflow.com/questions/557460/django-having-middleware-communicate-with-views-templates


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

移动风暴

移动风暴

[美]弗雷德·沃格尔斯坦 / 朱邦芊 / 中信出版社 / 2014-1-1 / 39

也许,除了伟大的乔布斯,每一位奋力改变世界的硅谷英雄,都值得我们肃然起敬。苹果与谷歌十年博弈,关于这场移动平台战争的报道早已铺天盖地,而这是第一次,我们能听到幕后工程师的真实声音。两大科技巨人用智能手机和平板电脑颠覆了电脑产业。它们位处变革的中心,凭借各自的经营哲学、魅力领袖和商业敏感度,把竞争变成了残酷对决。商业记者沃格尔斯坦报道这场对抗已逾十载,在《移动风暴》中,他带领我们来到一间间办公室和会......一起来看看 《移动风暴》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具