7

私は django ジェネリック ビューを使用しています。テンプレートでリクエストにアクセスするにはどうすればよいですか。

URL:

file_objects = {
    'queryset' : File.objects.filter(is_good=True),
}
urlpatterns = patterns('',
    (r'^files/', 'django.views.generic.list_detail.object_list', dict(file_objects, template_name='files.html')),
)
4

4 に答える 4

9

さらに検索した後、人々がこれに返信するのを待っています。私が見つけた:

これを settings.py に追加する必要があります

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.core.context_processors.request',
)

これは、デフォルトでリクエストがすべてのテンプレートに渡されることを意味します!

于 2010-08-31T08:41:01.673 に答える
3

get_queryset メソッドを使用してみてください。

def get_queryset(self):
    return Post.objects.filter(author=self.request.user)

リンクを参照してください (お役に立てば幸いです):- Greg Aker のページを参照してください...

于 2014-07-02T09:01:11.980 に答える
3

与えられた答えのどれも私の問題を解決しなかったので、ジェネリックビューテンプレート内のリクエストオブジェクトへのアクセスを望んでいることに出くわした他の人のために、urls.pyで次のようなことを行うことができます:

from django.views.generic import ListView

class ReqListView(ListView):
    def get_context_data(self, **kwargs):
        # Call the base implementation first to get a context
        c = super(ReqListView, self).get_context_data(**kwargs)
        # add the request to the context
        c.update({ 'request': self.request })
        return c

url(r'^yourpage/$',
    ReqListView.as_view(
        # your options
    )
)

乾杯!

于 2012-02-02T02:33:45.597 に答える
1

私にとってうまくいくのは、追加することでした:

TEMPLATE_CONTEXT_PROCESSORS = ("django.contrib.auth.context_processors.auth",
                           "django.core.context_processors.request",
                           )

urls.py ではなく、settings.py に

于 2012-01-23T22:35:39.683 に答える