我想为我的所有模板提供一个公共变量。我整个上午一直在努力,而我唯一能找到的方法就是拥有这样的中间件:
class GetNameMiddleware(object):
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
return response
def process_template_response(self, request, response):
response.context_data['name'] = 'dave'
return response
并具有如下视图:
from django.template.response import TemplateResponse
from django.shortcuts import render
def home(request):
return TemplateResponse(request, 'home.html', {})
然后我可以在模板中访问它
Hello {{ name }}
它只是似乎有点丑,我不能使用render
任何更多的(我知道我能做到from django.template.response import TemplateResponse as render
,但是这不是一个真正的解决方案)
(Django 1.10,python 3.5.2)
Django有一个标准的实现方式,即上下文处理器。本文提供了示例实现https://www.webforefront.com/django/setupdjangocontextprocessors.html。
实际上,上下文处理器只是一个接受请求对象并返回包含所需数据的字典的函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句