我一直在尝试使用更新的yourlabs订阅示例,除了
之外,安装工作正常订阅应用程序中的每个视图都会将渲染中的请求变量返回给模板。
模板中未收到此request context
变量,因此我收到以下错误
Caught VariableDoesNotExist while rendering: Failed lookup for key [request] in u
由于在每个视图中都会返回,因此我无法通过在特定模板中进行一些调整来解决此问题
答案 0 :(得分:2)
这种情况正在发生,因为request
不在模板的上下文中,并且模板正在使用一些期望它存在的模板代码。该代码(例如自定义模板代码)应该better handle VariableDoesNotExist
此外,您的观点可能不应明确地在每个响应中返回request
。让Django为你处理这个问题。
为此,请将Django随附的request template context processor添加到TEMPLATE_CONTEXT_PROCESSORS
:
TEMPLATE_CONTEXT_PROCESSORS = (
...
'django.core.context_processors.request',
...
)
如果您已在使用此模板上下文处理器,请确保调用render_to_response
并将context_instance=RequestContext(request)
作为最终参数(以下示例来自docs):
def some_view(request):
# ...
return render_to_response('my_template.html',
my_data_dictionary,
context_instance=RequestContext(request))
这可确保TEMPLATE_CONTEXT_PROCESSORS
中模板上下文处理器返回的所有dicts都传递给模板。
您还可以使用render
shortcut,它会自动使用Requestcontext
的实例呈现模板。
Django 1.3中添加的另一个选项是TemplateResponse
,它还将使用RequestContext
的实例。