Menu
CoddyTech

ログイン

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で設定します。

challenge icon

チャレンジ

簡単

ログインページを追加します。

  1. mysite/urls.pyで、accounts/の下にdjango.contrib.auth.urlsを含めます。
  2. notes/base.htmlを拡張するnotes/templates/registration/login.htmlを作成し、{% csrf_token %}を含むPOSTフォーム内にformを表示して、Log inボタンを設置します。
  3. settings.pyで、LOGIN_REDIRECT_URLを"/"に設定します。
  4. 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プレイグラウンド