settings.py に記載する ログイン関連の設定を整理
# ここの設定を整理
LOGIN_URL = ''
LOGIN_REDIRECT_URL = ''
LOGOUT_REDIRECT_URL = ''
LOGIN_URL
LOGIN_URL
には、実際のログイン処理を実行するページ(URL)を指定する。
LOGIN_URL = 'app:login'
このように指定した場合、 app アプリケーションの name='login' のページで
ログイン認証が行えるようになる。
from django.urls import path
from . import views
from django.contrib.auth import views as auth_views
app_name = 'app'
urlpatterns = [
path('', views.index, name='index'),
path('login/', auth_views.LoginView.as_view(template_name='app/login.html'), name='login'),
path('logout/', auth_views.LogoutView.as_view(), name='logout'),
]
例えば、↑のようなurls.pyを用意すると、
http://url/login/ (login.html)
ページにて、ログイン認証が行える。
app:login = app_name:name属性の対応っぽい
逆に、LOGIN_URL
に指定していないページでは、
認証関連のフィールドが利用できない。
{% if request.user.is_authenticated %} のような条件分岐が無効になってしまう。
LOGIN_REDIRECT_URL
LOGIN_REDIRECT_URL
には、ログイン処理を実行して認証されたときに飛ぶ先のURLを指定する。
LOGIN_REDIRECT_URL = 'app:index'
このように指定した場合、ログイン認証が承認されたときに、
app アプリケーションの name='index'のページにリダイレクトされる。
LOGOUT_REDIRECT_URL
もはや説明不要だけど
LOGOUT_REDIRECT_URL
には、ログアウト処理を実行したときに飛ぶ先のURLを指定する。
LOGOUT_REDIRECT_URL = 'app:login'
このように設定した場合、ログアウト処理が実行されたときに、
app アプリケーションの name='login'のページにリダイレクトされる。
まとめ
- LOGIN_URL = 'app:login'
→ ログイン処理が行えるページ - LOGIN_REDIRECT_URL = 'app:index'
→ ログイン完了したときにリダイレクトする先 - LOGOUT_REDIRECT_URL = 'app:index'
→ ログアウトしたときにリダイレクトする先
所感
LOGIN_URLの理解が苦戦した
ログインのページ以外でログイン認証実装しようとしてずっと無反応で頭抱えてしまっていた