5

通常のビューでは、次RequestContextのように変数にアクセスできますrequest.VARNAME

def example(request, template_name='stuff_list'):
  return render_to_response(template_name,
      {'stuff_list': get_list_or_404(Stuff, foo=request.DEBUG)},
      context_instance=RequestContext(request))

...設定する代わりに、関数ベースの汎用ビュー1context_instanceを呼び出すことができます direct_to_template

クラスベースの汎用ビュー 2内で RequestContext に追加された変数を読み取るにはどうすればよいですか?

例えば:

class ArticleListView(ListView):
  template_name = 'stuff_list'
  bar = request.DEBUG   # This won't work. What should I use instead?
  queryset = get_list_or_404(Stuff, foo=bar)


1とにかくクラスベースTemplateView に置き換えられます。
2それらは Django 1.3 で新しく追加されたものであり、私はそれらを使用したいと思っています。

4

2 に答える 2

7

get_queryset()この場合は、クラス属性の代わりにコールバックを使用する必要があります。クラス属性は、オプションを静的に制御している場合の実際のショートカットにすぎず、いくつかの非常に単純なものに限定されています。より複雑なことを行う必要がある場合は、代わりにコールバックに切り替えます。

あなたの場合、次のようなコードが機能するはずです。

class ArticleListView(ListView):
    template_name = 'stuff_list'

    def get_queryset(self):
        return get_list_or_404(Stuff, foo=self.request.DEBUG)

詳細については、ドキュメントを参照してください

于 2011-03-04T13:05:25.557 に答える
6

RequestContext パラメータも通常のコンテキスト変数です。あなたはちょうどできるはずです{{VARNAME}}

于 2011-03-04T06:26:25.437 に答える