ユーザーが自分のサイトにログインした後に、1つ以上の機能を実行したい。これはどのように可能ですか?私はミドルウェアを調べました。 Djangobookは、Djangoが処理するすべての要求に対してコードを実行するためにはこれが必要になると言います。しかし、認証が正常に行われたときにコードを実行するだけで済みます。Djangoで認証後にコードを実行する方法は?
注:私はDjango Allauthを認証に使用していますが、私は自分のログインのための自分のビューを持っていません。
ユーザーが自分のサイトにログインした後に、1つ以上の機能を実行したい。これはどのように可能ですか?私はミドルウェアを調べました。 Djangobookは、Djangoが処理するすべての要求に対してコードを実行するためにはこれが必要になると言います。しかし、認証が正常に行われたときにコードを実行するだけで済みます。Djangoで認証後にコードを実行する方法は?
注:私はDjango Allauthを認証に使用していますが、私は自分のログインのための自分のビューを持っていません。
公式documentationによれば、ユーザがログインするとトリガされる信号allauth.account.signals.user_logged_in
があります。これはあなたの目的に役立ちます。
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は良い候補です。
あなたは 'receiver'と' user_logged_in'がどこからインポートされるのかが明確になるように、少しだけコードを追加してこの回答を更新できますか?信号のドキュメントに疑問がある*間違い*が、この答えでそれを持っている多くの人(自分自身を含む)を助ける –
@ Mike'Pomax'Kamermansあなたの要求された変更が追加されました – e4c5