Django認証入門|ログイン・ログアウト・ユーザー管理の全体像を理解する
生徒
「Djangoでログイン機能を作れるって聞いたんですが、そもそも認証って何ですか?」
先生
「認証は“あなたが誰なのか”を確認する仕組みです。Djangoには最初からその仕組みが用意されています。」
生徒
「パソコンをあまり触ったことがなくても理解できますか?」
先生
「大丈夫です。家のカギに例えながら、順番に説明していきます。」
1. Django認証とは?ログイン機能の基本
Django認証とは、Webサイトにログインやログアウト、ユーザー管理を簡単に追加できる仕組みです。 ログインとは、サイトに入るときに「自分は誰か」を伝えることです。これは、家に入るときにカギを使うのと同じです。
Djangoには最初から「Django認証システム(Authentication)」が用意されており、ユーザー名やパスワードの管理を自動で行ってくれます。 そのため、プログラミング未経験者でも安全なログイン機能を作れます。
2. ユーザーとは何か?DjangoのUserモデル
ユーザーとは、Webサイトを利用する人のことです。Djangoでは、Userという特別な仕組みでユーザーを管理します。
Userには、ユーザー名、パスワード、メールアドレスなどが保存されます。これをモデルと呼びます。 モデルとは「データをしまう箱の設計図」のようなものです。
from django.contrib.auth.models import User
user = User.objects.create_user(
username="taro",
password="password123"
)
3. ログイン処理の流れをやさしく理解する
ログイン処理は次の流れです。
- ユーザー名とパスワードを入力
- Djangoが正しいか確認
- 正しければログイン状態になる
ログイン状態とは「この人はさっき確認した本人ですよ」と覚えている状態です。 これは手にスタンプを押して、再入場できるようにするのと似ています。
from django.contrib.auth import authenticate, login
user = authenticate(username="taro", password="password123")
if user:
login(request, user)
4. ログアウトとは?安全に退出する仕組み
ログアウトは、ログイン状態を解除することです。 公共のパソコンでログアウトしないと、他の人があなたになりすませてしまいます。
from django.contrib.auth import logout
logout(request)
この一行だけで、ログイン状態を安全に解除できます。
5. ログインしているかを確認する方法
「ログインしている人だけが見られるページ」を作ることができます。 これは、会員限定ページのようなものです。
if request.user.is_authenticated:
print("ログイン中です")
ログイン中です
6. Django標準のログイン画面を使う
Djangoには、最初からログイン画面用の仕組みがあります。 HTMLを自分で全部作らなくても動くので、初心者にやさしいです。
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">ログイン</button>
</form>
7. ユーザー管理でできること
Django認証を使うと、次のようなことができます。
- ユーザーの追加
- パスワードの変更
- 管理画面からの管理
管理画面とは、サイトの裏側を操作する画面です。WordPressの管理画面を想像すると分かりやすいです。
8. Django認証を使うメリット
Django認証の最大のメリットは安全で簡単なことです。 パスワードは自動で暗号化され、人の目には見えない形で保存されます。
暗号化とは、文字をぐちゃぐちゃにして読めなくする仕組みです。金庫に入れて鍵をかけるイメージです。