-1

ユーザーが自分のサイトにログインした後に、1つ以上の機能を実行したい。これはどのように可能ですか?私はミドルウェアを調べました。 Djangobookは、Djangoが処理するすべての要求に対してコードを実行するためにはこれが必要になると言います。しかし、認証が正常に行われたときにコードを実行するだけで済みます。Djangoで認証後にコードを実行する方法は?

注:私はDjango Allauthを認証に使用していますが、私は自分のログインのための自分のビューを持っていません。

答えて

1

公式documentationによれば、ユーザがログインするとトリガされる信号allauth.account.signals.user_logged_inがあります。これはあなたの目的に役立ちます。

4

Allauthの​​をタップする必要があります。具体的に信号

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

あなたは 'receiver'と' user_logged_in'がどこからインポートされるのかが明確になるように、少しだけコードを追加してこの回答を更新できますか?信号のドキュメントに疑問がある*間違い*が、この答えでそれを持っている多くの人(自分自身を含む)を助ける –

+0

@ Mike'Pomax'Kamermansあなたの要求された変更が追加されました – e4c5

関連する問題