LINUX.ORG.RU

Сессия в Джанго

 , ,


0

1

Доброго дня.

Не могу разобраться в механизме работы сессий в Джанго. Делаю сортировку, а текущий способ сортировки хочу хранить в сессии. Как я делаю:

Если сессия не установлена, вообще:

if (('phone_calls_order' in request.session) == False):
        request.session['phone_calls_order'] = {
            'order': 'created_at',
            'order_type': 'desc'
        }

Когда через GET приходит новый способ сортировки:

    if (order in ['created_at']):
        request.session['phone_calls_order']['order'] = order
    if (order_type in ['asc', 'desc']):
        request.session['phone_calls_order']['order_type'] = order_type

Применяю сортировку:

    phone_calls_order = request.session['phone_calls_order']['order']
    if (request.session['phone_calls_order']['order_type'] == 'desc'):
        phone_calls_order = '-' + phone_calls_order

    phone_calls = phone_calls.order_by(phone_calls_order)

Дело в том, что в момент, когда по GET приходит сортировка, то все нормально. Но только, как мы запускаем страницу без GET-данных, то почему-то сессия берется, которая по-умолчанию (не смотря на то, что в нее были записаны новые способы сортировки).

Стоит отметить, что для списка используется один роут (просто /), а для установки нового способа сортировки другой (/phone_calls/order/created_at/asc). Но обрабатывает это всё один и тот же view.

★★★

Последнее исправление: VirRaa (всего исправлений: 2)

У тебя ошибка в самой первой строке. Надо так:

if ((((len(str('phone_calls_order' in request.session))) == 5)))
anonymous
()
Ответ на: комментарий от VirRaa

facepalm. provaton, ты видишь что получается, когда хочешь сделать добро непроходимым идиотам? Это же клиника!

anonymous
()
Ответ на: комментарий от Siado

Чувствуется подход лиспера

Настоящий лиспер, пишущий на джанге, использует hy

risenshnobel ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.