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


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

查看所有标签

猜你喜欢:

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

欲罢不能

欲罢不能

[美] 亚当·奥尔特 / 闾佳 / 机械工业出版社 / 2018-4-1 / 59.00元

全面揭秘和解决“行为上瘾”的奠基之作 美国亚马逊分类图书畅销榜第一名 行为上瘾是什么?诱人上瘾的体验是如何设计出来的? 如何远离行为上瘾?如何用行为上瘾做些好事? ◆ 内容简介 ◆ 欢迎来到“行为上瘾”的时代! 我们中近半数人至少有一种“行为上瘾”:无时无刻盯着手机,不断刷朋友圈,通宵追看电视剧集,没日没夜打游戏,频繁查看邮件,用太多时间工作…… 而那些生......一起来看看 《欲罢不能》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

html转js在线工具
html转js在线工具

html转js在线工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具