2016-07-20 1 views
0

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

Первоначально я решил написать свой пользовательский логин для достижения этого, но, вероятно, промежуточное ПО является лучшим решением.

+0

http://stackoverflow.com/questions/14465993/how-can-i-set-and-get-session-variable-in-django –

+0

, что ответ о настройке переменной на сеанс, мой вопрос связан с Middleware. @AK спасибо за проголосовать за полезный вопрос – realnot

+0

django имеет промежуточное ПО сеанса по умолчанию. Итак, почему вам нужно использовать другой? –

ответ

0

Средство промежуточного уровня не было подходящим способом решения. Я обнаружил сигналы и я осуществил свое решение следующим образом:

@receiver(user_logged_in) 
def sig_user_logged_in(sender, user, request, **kwargs): 
    moderator = get_or_none(CompanyModerator, moderator__user=request.user) 
    if moderator: 
     if 'company_id' not in request.session: 
      request.session['company_id'] = moderator.company.id 

Разница заключается в том, что промежуточное программное обеспечение запускается на каждом запросе Джанго, когда потребности просто сделать что-то, когда пользователь получить вошедшего в/из. Каждый раз, когда пользователь получает вход/выход, мы добавляем некоторые данные/объектные модели и т. Д. На сеанс, чтобы отслеживать пользователя по всему веб-сайту.

Как вы думаете?

1

Пройдя все комментарии к вашему вопросу, я бы также сказал то же, что @akhil viswam в своем последнем комментарии.

Но теперь, когда вы определили, что вы хотите сделать некоторые пользовательские задачи, то вы можете написать свой собственный промежуточное программное обеспечение, как это ->https://github.com/ankushrgv/notification/blob/master/apps/accounts/middlewares.py

, а затем включить его в settings.py, как это ->https://github.com/ankushrgv/notification/blob/master/config/settings.py

В основном я писал пары значений user_id: session_id в Redis, а затем читал их в своих представлениях для отображения уведомлений в режиме реального времени, но только для зарегистрированных пользователей.

Надеюсь, это даст вам полное представление о том, как написать свое собственное промежуточное программное обеспечение.

Смежные вопросы