我使用了这段代码并且有效。
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)
这也不行。谢谢。
答案 0 :(得分:2)
我可以看到两个选项。
如果要向每个模板上下文添加汽车列表,请将处理器添加到TEMPLATE_CONTEXT_PROCESSORS
设置。有关详细信息,请参阅the documentation。
如果您只想添加模板的子集,请在第二个示例中使用custom_proc
的结果{/ 1}}。
答案 1 :(得分:1)
这些中的任何一个如何工作?您没有在任何地方致电custom_proc
。如果您想在模板中使用函数的结果,则需要调用它并将结果包含在上下文字典中。