【Django】django-allauth:ソーシャルアカウントと連携しているかどうかで処理を分岐する方法

割とよく使うのでメモ。

例えばログイン中のユーザーがメールアドレス(またはユーザー名)でアカウント登録しているのか、それともソーシャルアカウント(Twitterアカウント、Facebookアカウント等)で登録しているのかでテンプレートの処理を分けたいときに使えます。

テンプレート

[code lang=”html”]
{% get_social_accounts user as accounts %}
{% if accounts %}
{# 少なくとも1つのソーシャルアカウントがある場合 #}
{% else %}
{# ソーシャルアカウントがない(メールアドレスやユーザー名でログイン) #}
{% endif %}
[/code]

気になったこと

何らかの理由でソーシャルアカウントと連携しているけど、メールアドレスでログインしている場合はどうなるのかは未確認。

あんまりなさそうですが、一つのアカウントをソーシャルアカウント、メールアドレス(もしくはユーザー名)どちらでもログイン可能にしている場合は工夫が必要かもです。

参考

詳しくはallauth公式のGitに書いてます(日本語にすると大体分かる)

django-allauth/templates.rst at master · pennersr/django-allauth · GitHub

よかったらシェアしてね!
  • URLをコピーしました!