ログイン
CoddyのDjangoジャーニー「ユーザーとアカウント」セクションの一部。レッスン 2/16。
サイトは誰がサインインしているかを判別できますが、サインインするためのページがありません。DjangoにはビューLoginViewがあります。プロジェクトのurls.pyに1行追加すると、ログアウトページとパスワードページとともに利用できます。
path("accounts/", include("django.contrib.auth.urls")),これで/accounts/login/が作成され、名前はloginです。このビューは、usernameフィールドとpasswordフィールドを持つformとともに、registration/login.htmlをレンダリングします。このテンプレートは自分で作成します。通常のPOSTフォームです。Djangoは各アプリのtemplates/フォルダーを検索します。パスがnotes/ではなくregistration/から始まるのは、Djangoのビューがアプリを認識していないためです。
ログインに成功すると、ビューはLOGIN_REDIRECT_URLにリダイレクトします。デフォルトの/accounts/profile/はここには存在しないため、settings.pyで設定します。
チャレンジ
簡単ログインページを追加します。
mysite/urls.pyで、accounts/の下にdjango.contrib.auth.urlsを含めます。notes/base.htmlを拡張するnotes/templates/registration/login.htmlを作成し、{% csrf_token %}を含むPOSTフォーム内にformを表示して、Log inボタンを設置します。settings.pyで、LOGIN_REDIRECT_URLを"/"に設定します。base.htmlで、ログアウト中の訪問者には、Log inを{% url 'login' %}にリンクします。
ada(パスワードはcoddy-pass-123)でログインすると、ヘッダーに「adaとしてログイン中」と表示されます。
自分で試してみよう
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path("admin/", admin.site.urls),
path("", include("notes.urls")),
]
ユーザーとアカウントのすべてのレッスン
自分で練習してみよう: Djangoプレイグラウンド