如何转移到direct_to_template?

时间:2010-11-01 18:49:17

标签: django django-views

我使用了这段代码并且有效。

views.py:

from models import Car
from django.shortcuts import render_to_response, get_object_or_404
from django.template.context import RequestContext

def custom_proc(request):
    car_list = Car.objects.all()[0:5]
    return {'car_list': car_list}

def article(request, slug):
    text = get_object_or_404(Article, slug=slug)
    return render_to_response('article.html', {'text': text},
     context_instance=RequestContext(request, processors=[custom_proc]))

现在,我想重写他们使用direct_to_template快捷方式的视图代码。

views.py:

from models import Car
from django.shortcuts import get_object_or_404
from django.template.context import RequestContext
from django.views.generic.simple import direct_to_template

def custom_proc(request):
    car_list = Car.objects.all()[0:5]
    return {'car_list': car_list}

def article(request, slug):
    text = get_object_or_404(Article, slug=slug)
    return direct_to_template(request, 'article.html', {'text': text})

为什么不工作?如何将常用对象(从_custom_proc()_)传输到视图( article())和模板( article.html )?

我也试试:

return direct_to_template(request, 'article.html', {'text': text}, 'car_list': car_list)

这也不行。谢谢。

2 个答案:

答案 0 :(得分:2)

我可以看到两个选项。

如果要向每个模板上下文添加汽车列表,请将处理器添加到TEMPLATE_CONTEXT_PROCESSORS设置。有关详细信息,请参阅the documentation

如果您只想添加模板的子集,请在第二个示例中使用custom_proc的结果{/ 1}}。

答案 1 :(得分:1)

这些中的任何一个如何工作?您没有在任何地方致电custom_proc。如果您想在模板中使用函数的结果,则需要调用它并将结果包含在上下文字典中。