Django - 在urls.py中访问会话

时间:2011-07-16 17:09:31

标签: django django-urls

我正在尝试使用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装饰器应用于此?

非常感谢任何建议。

感谢。

1 个答案:

答案 0 :(得分:4)

请参阅dynamic filtering上的文档。

您应该继承ListView并覆盖get_queryset方法。调用基于类的视图时,self会填充当前请求(self.request)以及从网址捕获的所有内容(self.argsself.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())),