こちらの記事では、
django-allauth signalsの使い方、実例
をご紹介します
allauthには、色々な独自のsignalsが用意されています
- ログインしたとき
- ユーザー登録したとき
- メールが確認(confirm)されたとき などなど
詳しく知りたい!という方は公式ドキュメントでご確認下さい
ただ、公式ドキュメントには実例などが無いため、どうやって使うのか色々と試すのも時間がかかります
ということで、こちらの記事では簡単な実例と共に解説致しますので、是非ここでマスターして実戦で使ってみて下さい
実例紹介「email_confirmed」Eメールが確認されたとき
ここでは簡単な例として、「Eメールが確認されたら、ターミナルに「Eメールが確認されました!」と記述します
from allauth.account.signals import email_confirmed
def post_email_confirmed_receiver(**kwrags):
print("Eメールが確認されました!")
email_confirmed.connect(post_email_confirmed_receiver)
こちらは、accounts内などのmodels.py内最下部に記述して動作確認済みです
実際には、print()の部分をご自身の好きなコードに変えてください
Djangoのsignalsとの違い
Djangoのsignalsでは、senderを引数で受け取りconnectします
が、allauthのsignalsではsenderなどは不要なようですね!
ただ引数で受け取るものを利用することも多々あるので、**kwargsが何か見てみましょう!
def post_email_confirmed_receiver(**kwrags):
print(kwargs)
email_confirmed.connect(post_email_confirmed_receiver)
[Output]
{
'signal': <django.dispatch.dispatcher.Signal object at 0xxxrandomdigitsxxx>,
'sender': <class 'allauth.account.models.EmailConfirmationHMAC'>,
'request': <WSGIRequest: POST '/accounts/confirm-email/xxxxxxxxxxxxxxxxxxxxx'>,
'email_address': <EmailAddress: test@itc.tokyo>
}
signal, sender, request, email_address
の4つを受け取っているのがわかりますね!
そして何も与えなくとも既に全て必要なものが格納されています
この中でemail_addressは実際のモデルオブジェクトなので活用することはできそうです!
まとめ
今回は、email_confirmedのみの実例をご紹介しましたが、基本的にはどのsignalsも同じ構成で使用可能です
- receiverファンクションの記述
- receiverをconnectする
是非色々と試してみて下さい
最後までご覧いただきありがとうございました!!!