【发布时间】:2011-09-24 05:40:35
【问题描述】:
每次向我的应用发出请求时,我都会使用中间件来检索和存储一个“页面”对象,该对象包含与该特定页面相关的信息。我在请求对象中存储了对该对象的引用,这是一个示例:
class PageMiddleware(object):
def process_request(self, request):
if not hasattr(request, 'page'):
request.page = Page.objects.get(slug=<slug>)
return None
它工作得很好,但我想在模板标签中访问这个对象。模板标签仅引用“上下文”思想,这意味着我无法看到我的 Page 对象。
我知道我可以为此使用自定义上下文处理器,但这意味着要进一步修改设置文件,我想尝试尽可能地封装这个应用程序。例如,我注意到 Debug Toolbar 应用程序在不修改 TEMPLATE_CONTEXT_PROCESSORS 的情况下设法将数据附加到模板上下文。
简而言之,理想情况下,我想通过使用中间件来访问模板标签中的 Page 对象。有什么想法吗?
编辑:我使用的是标准模板标签,具有以下类:
class GetPageContentNode(Node):
def __init__(self, key):
self.key = key
def render(self, context):
return context['request'].page
【问题讨论】:
标签: django