3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Django】settigs.py に記載するログイン関連の設定を整理してみた

Posted at

settings.py に記載する ログイン関連の設定を整理

settings.py
# ここの設定を整理
LOGIN_URL = ''
LOGIN_REDIRECT_URL = ''
LOGOUT_REDIRECT_URL = ''

LOGIN_URL

LOGIN_URL には、実際のログイン処理を実行するページ(URL)を指定する。

settings.py
LOGIN_URL = 'app:login'

このように指定した場合、 app アプリケーションの name='login' のページで
ログイン認証が行えるようになる。

urls.py
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を指定する。

settings.py
LOGIN_REDIRECT_URL = 'app:index'

このように指定した場合、ログイン認証が承認されたときに、
app アプリケーションの name='index'のページにリダイレクトされる。

LOGOUT_REDIRECT_URL

もはや説明不要だけど
LOGOUT_REDIRECT_URL には、ログアウト処理を実行したときに飛ぶ先のURLを指定する。

settigs.py
LOGOUT_REDIRECT_URL = 'app:login'

このように設定した場合、ログアウト処理が実行されたときに、
app アプリケーションの name='login'のページにリダイレクトされる。

まとめ

  • LOGIN_URL = 'app:login'
    → ログイン処理が行えるページ
  • LOGIN_REDIRECT_URL = 'app:index'
    → ログイン完了したときにリダイレクトする先
  • LOGOUT_REDIRECT_URL = 'app:index'
    → ログアウトしたときにリダイレクトする先

所感

LOGIN_URLの理解が苦戦した
ログインのページ以外でログイン認証実装しようとしてずっと無反応で頭抱えてしまっていた

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?