我正在尝试使用ListView来避免为应该是一个非常简单的页面创建一个视图。 基本上我想列出一组与当前用户相关的对象,但是我不知道如何从urls.py中访问会话值。
我看起来像这样:
(r'^myrecords/$', ListView.as_view(
queryset=Record.objects.filter(CURRENT LOGGED IN USER),
context_object_name='record_list',
template_name='records.html')),
我需要做什么?
还有什么方法可以将login_required装饰器应用于此?
非常感谢任何建议。
感谢。
答案 0 :(得分:4)
请参阅dynamic filtering上的文档。
您应该继承ListView
并覆盖get_queryset
方法。调用基于类的视图时,self
会填充当前请求(self.request
)以及从网址捕获的所有内容(self.args
,self.kwargs
)。< / p>
from django.views.generic import ListView
from myapp.models import Record
class MyRecordsListView(ListView):
context_object_name = 'record_list'
template_name = 'records.html',
def get_queryset(self):
return Record.objects.filter(user=self.request.user)
还有decorating class-based views的文档。基本上,您只需在as_view
:
urls.py
的结果即可
(r'^myrecords/$', login_required(MyRecordsListView.as_view())),