我一直在尝试使用更新后的 yourlabs 订阅示例,并且安装工作正常,除了
订阅应用程序中的每个视图都将渲染中的请求变量返回到模板。
模板中未收到此
request context
变量,因此我收到以下错误Caught VariableDoesNotExist while rendering: Failed lookup for key [request] in u
由于在每个视图中都会返回此问题,因此我无法通过在特定模板中进行一些调整来解决此问题
我一直在尝试使用更新后的 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
.
Django 1.3 中添加的另一个选项是TemplateResponse
,它也将使用RequestContext
.