我一直在尝试使用更新后的yourlabs订阅示例,除了
之外,安装工作正常订阅应用中的每个视图都返回渲染到模板中的请求变量。
此
request context
变量未在模板中收到,因此我得到以下错误Caught VariableDoesNotExist while rendering: Failed lookup for key [request] in u
由于这是在每个视图返回,我不能解决这个问题,通过在一个特定的模板做一些调整
这是发生的,因为request
不是在你的模板的上下文中,模板正在使用一些模板代码,期望它在那里。该代码(例如自定义模板标签)应该更好地处理VariableDoesNotExist
此外,您的视图可能不应该在每个响应中显式返回request
。让Django为你处理。
要做到这一点,将Django附带的请求模板上下文处理器添加到TEMPLATE_CONTEXT_PROCESSORS
:
TEMPLATE_CONTEXT_PROCESSORS = (
...
'django.core.context_processors.request',
...
)
如果你已经在使用这个模板上下文处理器,确保render_to_response
是用context_instance=RequestContext(request)
作为最后一个参数来调用的(下面的例子来自文档):
def some_view(request):
# ...
return render_to_response('my_template.html',
my_data_dictionary,
context_instance=RequestContext(request))
这确保了TEMPLATE_CONTEXT_PROCESSORS
中模板上下文处理器返回的所有字典都被传递给模板。
您也可以使用render
快捷方式,它将自动渲染模板与Requestcontext
的实例。
TemplateResponse
,它也会使用RequestContext
的一个实例。