Django認証でログイン機能を実装する方法|認証ビューとテンプレートの基本を初心者向けに完全解説
生徒
「Webサイトでよく見るログイン画面って、どうやって作っているんですか?Djangoでできますか?」
先生
「Djangoには、最初からログイン機能を作るための“認証機能”が用意されています。とても便利ですよ。」
生徒
「パソコンもあまり触ったことがなくて不安です……」
先生
「大丈夫です。ログイン機能を“受付と名簿”に例えながら、ゆっくり説明していきます。」
1. Django認証とは?ログイン機能の全体像
Django認証とは、Webサイトにログイン機能やユーザー管理機能を簡単に追加できる仕組みです。ログインとは、誰がサイトを使っているかを確認することです。
学校で例えると、校門にいる先生が名簿を見て「あなたは在校生ですね」と確認するようなものです。この確認作業をDjangoが自動でやってくれます。
Djangoの認証機能には、ログイン、ログアウト、パスワード管理などが最初から入っているため、初心者でも安全なログイン機能を作れます。
2. Django認証で使われる基本用語をやさしく解説
ここでは、Django認証でよく出てくる言葉を説明します。
ユーザー:ログインする人のことです。名前やパスワードを持っています。
認証:入力された情報が正しいか確認することです。
ビュー:画面を表示したり、処理をまとめた場所です。
テンプレート:HTMLで作る画面の設計図です。
難しく感じますが、「画面」「処理」「確認作業」と考えるとシンプルです。
3. Django標準のログインビューを使う
Djangoには、ログイン用のビューが最初から用意されています。自分で一から作る必要はありません。
まず、URL設定でログインページを登録します。
from django.urls import path
from django.contrib.auth import views as auth_views
urlpatterns = [
path('login/', auth_views.LoginView.as_view(), name='login'),
]
このコードは「login/にアクセスしたら、ログイン画面を表示する」という意味です。受付に案内板を置くイメージです。
4. ログイン用テンプレートを作成する
次に、ログイン画面の見た目を作ります。これがテンプレートです。
Djangoでは、registration/login.htmlという名前のHTMLを作ると、自動で使われます。
<h2>ログイン</h2>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">ログイン</button>
</form>
このHTMLは、「名前とパスワードを書く紙」と考えてください。送信ボタンを押すと、Djangoが確認してくれます。
5. ログイン成功後の移動先を設定する
ログインが成功したあと、どのページに移動するかを決めます。
これは、受付を通ったあとに「教室はこちらです」と案内するようなものです。
LOGIN_REDIRECT_URL = '/'
この設定をsettings.pyに書くことで、ログイン後にトップページへ移動します。
6. ログアウト機能も一緒に理解しよう
ログアウトは「帰るときに名札を返す」イメージです。
Djangoでは、ログアウト用のビューも用意されています。
path('logout/', auth_views.LogoutView.as_view(), name='logout'),
この設定で、ログアウトURLが使えるようになります。
7. ログイン状態で表示を切り替える方法
ログインしている人だけに表示したい内容もあります。
テンプレートでは、ログイン状態を簡単に確認できます。
{% if user.is_authenticated %}
<p>ログイン中です</p>
{% else %}
<p>ログインしてください</p>
{% endif %}
これは「名札を付けているかどうか」を確認して、表示を変える仕組みです。
8. Django認証を使うメリットと安心ポイント
Django認証を使う最大のメリットは、安全性です。
パスワードはそのまま保存されず、特別な形に変換されます。これにより、万が一データが見られても安心です。
また、ログイン処理を自分で考えなくてよいため、初心者でも失敗しにくい設計になっています。