好吧,这可能是一个非常愚蠢的问题,但我是Python/Django的新手,所以我还不能真正地围绕它的范围概念.现在我正在编写一个中间件类来处理一些东西,我想设置我的视图和模板可以访问的"全局"变量.这样做的"正确"方法是什么?我考虑做过这样的事情:
from django.conf import settings
class BeforeFilter(object):
def process_request(self, request):
settings.my_var = 'Hello World'
return None
Run Code Online (Sandbox Code Playgroud)
from django.conf import settings
from django.http import HttpResponse
def myview(request):
return HttpResponse(settings.my_var)
Run Code Online (Sandbox Code Playgroud)
虽然这有效,但我不确定它是"Django方式"还是"Python方式".
所以,我的问题是:
1.这是正确的方法吗?
2.如果它是正确的方法,添加可以在中间件的实际模板中使用的变量的正确方法是什么?说我想评估一些东西,我想headername在中间件中将变量设置为"我的站点名称",我希望能够{{ headername }}在所有模板中进行.按照我现在的方式进行,我必须headername在每个视图中添加上下文.反正有没有绕过这个?我正在考虑CakePHP的$this->set('headername','My Site Name');
3 行.我使用中间件类作为CakePHP的等价物beforeFilter,它在每个视图(或CakePHP中的控制器)被调用之前运行.这是正确的做法吗?
4.完全不相关,但这是一个小问题,将一个变量的内容打印到浏览器ala的好方法是print_r什么?说我想看到里面的所有内容request都传递到视图中?pprint答案是答案吗?