我正在使用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')),
)
答案 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