使用常规视图,可以像RequestContext
一样访问request.VARNAME
个变量:
def example(request, template_name='stuff_list'):
return render_to_response(template_name,
{'stuff_list': get_list_or_404(Stuff, foo=request.DEBUG)},
context_instance=RequestContext(request))
...而不是设置context_instance
我可以调用基于函数的通用视图 direct_to_template
1
如何在class-based generic views 2 中读取添加到RequestContext的变量?
例如:
class ArticleListView(ListView):
template_name = 'stuff_list'
bar = request.DEBUG # This won't work. What should I use instead?
queryset = get_list_or_404(Stuff, foo=bar)
<小时/> 无论如何, 1 将被class-based
TemplateView
取代
2 它们是Django 1.3中的新功能,我想使用它们只是因为。
答案 0 :(得分:7)
在这种情况下,您需要使用回调 - get_queryset()
- 而不是类属性。当你静态地控制选项时,类属性实际上只是快捷方式,并且它们仅限于一些非常简单的事情。当你需要做一些更复杂的事情时,你会想要改为回调。
在您的情况下,以下代码应该有效:
class ArticleListView(ListView):
template_name = 'stuff_list'
def get_queryset(self):
return get_list_or_404(Stuff, foo=self.request.DEBUG)
有关详细信息,请see the documentation。
答案 1 :(得分:6)
RequestContext参数也是常规上下文变量。你应该只能做{{VARNAME}}