0

私のビューの束には、(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:(ハンの**辞書のアンパックの提案を使用)

注目すべき変更点: ['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))
4

1 に答える 1

1

試してみてくださいrender_to_response(template_name, kwargs)。Render to response は引数として実際のディクショナリを受け取るため、ディクショナリを再利用できますkwargs**kwargsディクショナリをキーワード スタイルの引数にアンパックするため、ディクショナリではなくなります。

于 2012-09-20T20:22:23.500 に答える