【发布时间】:2015-03-20 04:49:08
【问题描述】:
我是 Django 初学者。到目前为止,我学习了从 view 到 template 的传递变量。但现在我需要将变量传递给我的主布局。我可以在每个页面的定义中传递它。但它的重复太多了。所以我开始学习中间件。
我创建了 middlewares.py 并将其包含在设置中。在 middlewares.py 文件中,如何将变量传递给我的主布局?
以下是我目前的 middlewares.py 内容,我尝试了很多方法并把它们注释掉,因为不起作用。
from django.db import connections
from django.shortcuts import render, redirect
class NotificationsMiddleware(object):
def process_view(self, request, view_func, view_args, view_kwargs):
request.context_data['notification_count'] = 2
response = view_func(request, *view_args, **view_kwargs)
return response
# def process_request(self, request):
# request.notification_count = 2
# return
# def process_template_response(self, request, response):
# # response.context['notification_count'] = 2
# response.context_data['notification_count'] = 2
# # return response
# return render(request, 'main/locations.html')
【问题讨论】:
-
我不明白为什么您接受了在
context processor中提供解决方案的答案,您在middleware中专门询问了如何做到这一点 -
就像我说的那样,我是初学者 :)
-
是的,我明白了,不用担心。哈哈,这只是一个完美的帖子标题,可以解决我最近的问题。我通过文档弄清楚了,但我没想到上下文处理器会成为这里的主要解决方案。
标签: django variables middleware