我正在使用 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')),
)
我正在使用 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')),
)
经过一番搜索,等待人们回复此问题。我发现:
您需要将此添加到您的 settings.py
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.request',
)
这意味着默认情况下,请求将被传递给所有模板!
给出的答案都没有解决我的问题,因此对于那些偶然发现想要访问通用视图模板中的请求对象的其他人,您可以在 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
)
)
干杯!
尝试使用 get_queryset 方法。
def get_queryset(self):
return Post.objects.filter(author=self.request.user)
查看链接(希望对您有所帮助):- 请参阅 Greg Aker 的页面...
对我有用的是添加:
TEMPLATE_CONTEXT_PROCESSORS = ("django.contrib.auth.context_processors.auth",
"django.core.context_processors.request",
)
到 settings.py 而不是 urls.py