将字典中的一堆默认值传递到模板中的问题

时间:2012-09-20 20:18:09

标签: python django

对于我的一堆视图,我每次都传递了很多字典值(以及context_instance),所以我试图创建一个快捷方式:

def render_with_context(request, *args, **kwargs):
    kwargs['context_instance'] = RequestContext(request)
    kwargs['dict']['dare_count'] = Dare.objects.all().count()
    kwargs['dict']['proof_count'] = Proof.objects.all().count()
    kwargs['dict']['user_count'] = User.objects.all().count()
    return render_to_response(*args, **kwargs)

但是它无法工作,因为django不会接受模板中的命名词典,它只需要一个匿名的{}词典。我该如何解决此问题,如何从值中删除名称?

由于

EDIT FIXED :(使用Han的建议**解包字典)

值得注意的变化:['dict']消失了,我们只将context_instance作为参数传递,字典未解包。

def render_with_context(request, args, kwargs):
   kwargs['dare_count'] = Dare.objects.all().count()
   kwargs['proof_count'] = Proof.objects.all().count()
   kwargs['user_count'] = User.objects.all().count()
   return render_to_response(args, kwargs, context_instance = RequestContext(request))

1 个答案:

答案 0 :(得分:1)

试试render_to_response(template_name, kwargs)。渲染到响应会将实际字典作为其参数,因此您可以重用字典kwargs**kwargs将字典解包为关键字样式参数,因此它不再是字典。