Django - Сеанс доступа в urls.py - PullRequest
3 голосов
/ 16 июля 2011

Я пытаюсь использовать 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 Ответ

4 голосов
/ 16 июля 2011

См. Документы по динамическая фильтрация .

Вы должны создать подкласс ListView и переопределить метод get_queryset. Когда вызывается представление на основе классов, self заполняется текущим запросом (self.request), а также всем, что захвачено из URL (self.args, self.kwargs).

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)

Есть также документация для украшения представлений классов . По сути, вы можете просто украсить результат as_view в вашем urls.py:

(r'^myrecords/$', login_required(MyRecordsListView.as_view())),
...