Django 4 の認証システムを活用し、ユーザー登録、ログイン、ログアウト機能の実装方法を解説します。
Django 4 には、ユーザー認証のための強力なシステムが標準で搭載されています。
本記事では、ユーザー登録・ログイン・ログアウト機能 の実装方法について解説します。
Django は以下のような認証機能を提供しています。
✅ Django の認証機能
django.contrib.auth
)Django では、デフォルトで User
モデル が用意されています。
PYTHONfrom django.contrib.auth.models import User # すべてのユーザーを取得 users = User.objects.all()
✅ User モデルの主なフィールド
username
: ユーザー名(必須)email
: メールアドレスpassword
: ハッシュ化されたパスワードis_staff
: 管理画面へのアクセス権is_superuser
: スーパーユーザー権限Django には UserCreationForm
という便利なフォームが用意されています。
forms.py
:
PYTHONfrom django import forms from django.contrib.auth.forms import UserCreationForm from django.contrib.auth.models import User class SignUpForm(UserCreationForm): email = forms.EmailField(required=True) class Meta: model = User fields = ["username", "email", "password1", "password2"]
views.py
:
PYTHONfrom django.shortcuts import render, redirect from django.contrib.auth import login from .forms import SignUpForm def signup_view(request): if request.method == "POST": form = SignUpForm(request.POST) if form.is_valid(): user = form.save() login(request, user) return redirect("home") else: form = SignUpForm() return render(request, "signup.html", {"form": form})
✅ ポイント
UserCreationForm
を利用し、簡単に登録フォームを作成form.is_valid()
でバリデーションを実施login(request, user)
で登録後に自動ログインDjango は LoginView
と LogoutView
を提供しており、これを使うと簡単にログイン・ログアウトを実装できます。
PYTHONfrom django.contrib.auth.views import LoginView, LogoutView from django.urls import path urlpatterns = [ path("login/", LoginView.as_view(template_name="login.html"), name="login"), path("logout/", LogoutView.as_view(next_page="login"), name="logout"), ]
HTML<form method="post"> {% csrf_token %} {{ form.as_p }} <button type="submit">ログイン</button> </form>
✅ ポイント
LoginView
を path("login/")
で URL に関連付けるLogoutView
でログアウト後にログインページへリダイレクトDjango の login_required
デコレーター を使用すると、ログイン済みのユーザーのみ特定のページにアクセスさせることができます。
PYTHONfrom django.contrib.auth.decorators import login_required from django.shortcuts import render @login_required def dashboard_view(request): return render(request, "dashboard.html")
✅ ポイント
@login_required
をビューに適用すると、ログインしていないユーザーは自動的にログインページへリダイレクトされるsettings.py
に以下を追加すると、デフォルトのログインページを指定可能PYTHONLOGIN_URL = "/login/"
UserCreationForm
を活用すると、簡単にユーザー登録フォームを作成可能。LoginView
と LogoutView
を利用してログイン・ログアウト機能を実装。login_required
を適用すると、認証が必要なページへのアクセスを制限できる。回 | タイトル | リンク |
---|---|---|
第 1 回 | Django: 認証システムとログイン機能 | この記事 |
第 2 回 | Django: カスタムユーザーモデルの作成 | 詳 細 |
第 3 回 | Django: メール認証とパスワードリセット | 詳 細 |
第 4 回 | Django: ソーシャルログイン(Google・LINE 認証) | 詳 細 |
第 5 回 | Django: API の作成と Django REST Framework の導入 | 詳 細 |
第 6 回 | Django: 認証付き API(JWT 認証とセッション認証) | 詳 細 |
第 7 回 | Django: CORS 設定とフロントエンドとの連携 | 詳 細 |
第 8 回 | Django: ルーティングのテストとデバッグ | 詳 細 |
第 9 回 | Django: カスタムミドルウェアの作成 | 詳 細 |
第 10 回 | Django: 非同期処理と async/await の活用 | 詳 細 |
第 11 回 | Django: カスタムコマンドの作成 | 詳 細 |
当サイトの情報は、一般的な参考情報として提供しております。
正確な情報の掲載に努めておりますが、その内容の正確性・完全性・最新性を保証するものではありません。
記事の内容をご利用の際は、ご自身の責任において判断し、必要に応じて専門家にご相談ください。
当サイトの情報の利用により生じたいかなる損害についても、一切の責任を負いかねますのでご了承ください。
※ 本ページでは、著作権法に基づき、適正な引用の範囲内でコンテンツを紹介しています。
オリジナルの情報は発信元をご確認ください。
もし問題がありましたら、こちら からお問い合わせください。