Доброго дня.
Не могу разобраться в механизме работы сессий в Джанго. Делаю сортировку, а текущий способ сортировки хочу хранить в сессии. Как я делаю:
Если сессия не установлена, вообще:
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.