Django Generic View - 访问请求

时间:2010-08-31 08:25:27

标签: django django-generic-views

我正在使用django通用视图,如何在模板中访问请求。

网址:

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 个答案:

答案 0 :(得分:9)

经过一番搜索,等待人们回复此事。我找到了:

您需要将其添加到settings.py

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

这意味着默认情况下,请求将传递给所有模板!

答案 1 :(得分: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
    )
)

干杯!

答案 2 :(得分:3)

尝试使用get_queryset方法。

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

看链接(希望它有帮助): - See Greg Aker's page...

答案 3 :(得分:1)

对我有用的是添加:

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

到settings.py而不是urls.py