0

这些功能不应该完全一样吗?

def IndexView(request):
    return direct_to_template(request, template='index.html')

def IndexView2(request):
    return render_to_response('index.html',
                              {'request': request},
                              context_instance=RequestContext(request))

我不是在问两者之间的区别,但是为什么在模板上我使用 direct_to_template 时不能使用 {{request}} ...我阅读了很多类似的问题,但我无法弄清楚。

有谁知道为什么?谢谢,

4

2 回答 2

2

原因是默认情况下direct_to_template实际使用RequestContext(request)(所有通用视图也是如此),这意味着您的所有模板上下文处理器都在模板中可用(包括django.core.context_processors.request使request变量可访问的原因)。

当您使用 时RequestContext,它会扫描所有模板上下文处理器( TEMPLATE_CONTEXT_PROCESSORS在您的 settings.py中定义)并自动将它们添加到上下文中,以便它们在您的模板中可用。从文档:

第二个区别是它会根据您的 TEMPLATE_CONTEXT_PROCESSORS 设置自动使用一些变量填充上下文。

于 2012-08-17T01:26:35.330 回答
-1

您需要将 django.core.context_processors.request 添加到 settings.py 中的 TEMPLATE_CONTEXT_PROCESSORS。

于 2012-08-16T23:51:02.143 回答