内容简介:>这不是最好的方式.您可以在请求而不是设置上设置my_var.设置是全局的,适用于整个站点.您不希望为每个请求修改它.多个请求同时更新/读取变量可能会出现并发问题.>要在模板中访问request.my_var,您可以执行{{request.my_var}}.要访问模板中的请求变量,必须将django.core.context_processors.request添加到TEMPLATE_CONTEXT_PROCESSORS设置中.>是的.描述请求中间件的其他术语将是请求预处理器/过滤器/拦截器.
类来处理一些东西,我想设置我的视图和模板可以访问的“全局”变量.这样做的“正确”方法是什么?我考虑做过这样的事情:
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
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- iOS小技巧·把子视图控制器的视图添加到父视图控制器
- CouchDB 视图简介及增量更新视图的方法
- c# – 将数据从部分视图传递到其父视图
- Django 基于函数的视图与基于类的视图
- 类视图
- laravel 基础教程 —— 视图
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
算法技术手册
[美]海涅曼 (Heineman.G.T.)、[美]波利切 (Pollice.G.)、[美]塞克欧 (Selkow.S.) / 东南大学出版社 / 2009-4 / 58.00元
创造稳定的软件需要有效的算法,但是程序设计者们很少能在问题出现之前就想到。《算法技术手册(影印版)》描述了现有的可以解决多种问题的算法,并且能够帮助你根据需求选择并实现正确的算法——只需要一定的数学知识即可理解并分析算法执行。相对于理论来说,本书更注重实际运用,书中提供了多种程序语言中可用的有效代码解决方案,可轻而易举地适合一个特定的项目。有了这本书,你可以: 解决特定编码问题或改进现有解决......一起来看看 《算法技术手册》 这本书的介绍吧!