Работа с Redis для хранения сеанса — Django

Я установил django-redis-session через pip и добавил эти настройки в файл settings.py:

SESSION_ENGINE = 'redis_sessions.session'

Когда я иду в терминал и печатаю:

$ redis-cli monitor

Я вижу изменения при входе и выходе из системы (используя python-social-auth).

Мой вопрос: как я могу получить сеанс (от Redis) на основе пользователя?

Если я вызываю функцию пользователя is_authenticated(), она работает, но таблица сеансов моей БД (PostgreSQL) имеет 0 строк.

Fianlly, есть ли способ написать сеансовый ключ и данные вручную? Мне нужно будет использовать сложный ПК для сеанса на основе двух полей, хранящихся в Redis.


person Gocht    schedule 02.03.2016    source источник
comment
Я не понимаю вашего вопроса. Почему вы ожидаете каких-либо строк в Posgres? Вы специально установили серверную часть сеанса на Redis.   -  person Daniel Roseman    schedule 02.03.2016
comment
@DanielRoseman Да, я не ожидаю строк в Postgres, я просто сказал, что сеанс был успешно сохранен в Redis.   -  person Gocht    schedule 02.03.2016


Ответы (1)


Вы должны иметь возможность получить текущий сеанс с помощью request.session. Это должно работать независимо от того, какой сервер сеанса вы используете, независимо от того, вошел ли пользователь в систему.

См. документацию по использованию сеансов в представлениях для получения дополнительной информации.

person Alasdair    schedule 02.03.2016
comment
Из request.session я могу получить доступ к пользователю, спасибо. - person Gocht; 02.03.2016
comment
Если вам нужен вошедший в систему пользователь, используйте request.user - вам не нужно проходить через сеанс. - person Alasdair; 02.03.2016
comment
Еще раз спасибо, еще один вопрос: Вы знаете, как я могу написать сеанс вручную? Мне нужно использовать сложный ПК для сеансов, и я хотел бы сохранить его в Redis. - person Gocht; 02.03.2016
comment
Я не уверен, что вы подразумеваете под «написать сеанс вручную». Вы можете сохранять значения в сеансе с помощью request.session['key'] = 'value'. Если вы пытаетесь изменить ключ сеанса, то я не сразу понимаю, как вы это сделаете, и в любом случае я не думаю, что это хорошая идея. Сеансовые ключи не должны быть угадываемыми. - person Alasdair; 02.03.2016
comment
Я посмотрю. Спасибо еще раз! - person Gocht; 02.03.2016