-1

Я хочу выполнить одну или несколько функций после входа пользователя на мой сайт. Как это возможно? Я посмотрел Middleware. Djangobook говорит, что мне понадобится это, чтобы запустить кусок кода по каждому запросу, который обрабатывает Django. Однако мне просто нужно запустить код, когда проверка подлинности произойдет успешно.Как выполнить код после аутентификации в Django?

Примечание: Я использую Django Allauth для аутентификации, и у меня нет собственного представления для входа в систему.

ответ

1

Согласно официальному сообщению documentation, появляется сигнал allauth.account.signals.user_logged_in, который запускается при входе пользователя в систему. Это может служить вашей цели.

4

Вам необходимо нажать на Allauth's signals. В частности, пользователь вошел в сигнал

allauth.account.signals.user_logged_in(request, user) 

Sent when a user logs in. 

Так добавить код, подобный следующему в вашем проекте.

from django.dispatch.dispatcher import receiver 
from allauth.account.signals import user_logged_in 

@receiver(user_logged_in, dispatch_uid="unique") 
def user_logged_in_(request, user, **kwargs): 
    print request.user 

Этот код должен быть в месте, которое, вероятно, будет прочитано при запуске django. models.py и views.py - хорошие кандидаты.

+0

Можете ли вы обновить этот ответ, включив в него только немного больше кода, чтобы было понятно, откуда импортируются «получатель» и «user_logged_in», и как убедиться, что эта функция называется «при запуске»? Документация сигналов, несомненно, имеет это * где-то *, но наличие этого ответа поможет намного большему количеству людей (включая меня) –

+0

@ Mike'Pomax'Kamermans ваши запрошенные изменения добавлены – e4c5

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