你的实验室订阅错误——在渲染时捕获变量doesnotexist



我一直在尝试使用更新后的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的一个实例。

相关内容

  • 没有找到相关文章

最新更新