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

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

内容简介:>这不是最好的方式.您可以在请求而不是设置上设置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


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

查看所有标签

猜你喜欢:

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

Real-Time Rendering, Third Edition

Real-Time Rendering, Third Edition

Tomas Akenine-Moller、Eric Haines、Naty Hoffman / A K Peters/CRC Press / 2008-7-25 / USD 102.95

Thoroughly revised, this third edition focuses on modern techniques used to generate synthetic three-dimensional images in a fraction of a second. With the advent or programmable shaders, a wide varie......一起来看看 《Real-Time Rendering, Third Edition》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

URL 编码/解码
URL 编码/解码

URL 编码/解码

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

HSV CMYK互换工具