如何在基于类的通用视图中访问 RequestContext?
Posted
技术标签:
【中文标题】如何在基于类的通用视图中访问 RequestContext?【英文标题】:How to access RequestContext in class-based generic views? 【发布时间】:2012-04-27 02:56:42 【问题描述】:我的 urls.py 中有这条路径:
archive_index_dict =
'queryset': News.objects.filter(show=True),
'date_field': 'date',
'template_object_name': 'object_list',
...
url(r'^$', 'django.views.generic.date_based.archive_index',
archive_index_dict, name='news_archive_index'
),
现在我想在模板中检测页面是否为当前页面(这是用于菜单样式)。 request.path
和 request.get_full_path
在模板中都不起作用。
我应该改用什么?
解决方案
要在模板中获得request
,我必须将django.core.context_processors.request
添加到TEMPLATE_CONTEXT_PROCESSORS
。这不是默认设置的(从 django 1.3 开始)。
【问题讨论】:
您是否设置了django....request
上下文处理器?几乎所有 CBV 默认使用RequestContext
天啊,当然不是! :) 谢谢你的提示,我已经在设置中添加了'django.core.context_processors.request'
,request
现在可以在模板中使用。顺便说一句,你可以发表你的评论作为答案,我会投票给它。
【参考方案1】:
您是否设置了'django.core.context_processors.request'
上下文处理器?几乎所有 CBV 默认使用RequestContext
【讨论】:
您可以添加参考吗?喜欢提到此内容的文档/源代码的链接? 我认为这里的问题实际上是关于模板上下文的,与使用的视图无关。很抱歉造成混乱。 我深入研究了代码,似乎 CBV 实际上并没有生成上下文对象;然而,他们确实使用了 Template 类,该类使用 make_context 函数(如果它传递了请求)以上是关于如何在基于类的通用视图中访问 RequestContext?的主要内容,如果未能解决你的问题,请参考以下文章
如何根据 Django 中当前基于类的通用视图模型向模板加载器添加路径