2

我一直在尝试使用更新后的 yourlabs 订阅示例,并且安装工作正常,除了

  • 订阅应用程序中的每个视图都将渲染中的请求变量返回到模板。

  • 模板中未收到此request context变量,因此我收到以下错误

    Caught VariableDoesNotExist while rendering: Failed lookup for key [request] in u

由于在每个视图中都会返回此问题,因此我无法通过在特定模板中进行一些调整来解决此问题

4

1 回答 1

2

发生这种情况是因为request不在模板的上下文中,并且模板正在使用一些期望它存在的模板代码。该代码(例如自定义模板标签)应该更好地处理 VariableDoesNotExist

此外,您的观点可能不应该request在每个响应中明确返回。让 Django 为您处理这个问题。

为此,请将Django 附带的请求模板上下文处理器TEMPLATE_CONTEXT_PROCESSORS添加到您的:

TEMPLATE_CONTEXT_PROCESSORS = (
    ...
    'django.core.context_processors.request',
    ...
)

如果您已经在使用此模板上下文处理器,请确保将render_to_responsecontext_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.

于 2012-01-07T15:01:53.437 回答