Django 5.0 ログインページの実装手順

URL設定の構成

プロジェクトのメインURL設定ファイルで、ログイン関連のパスを定義します。

from django.contrib import admin
from django.urls import path
from auth_module import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('welcome/', views.welcome),
    path('login/', views.login_view),
    path('login_handler/', views.login_handler),
]

ビュー関数の作成

認証モジュールのビューファイルにログイン処理用の関数を実装します。

from django.shortcuts import render

def login_view(request):
    return render(request, 'login_form.html')

テンプレートディレクトリの構成

アプリケーション配下にtemplatesディレクトリを作成し、ログインフォーム用のHTMLファイルを配置します。

ログインフォームの実装

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>ログインフォーム</title>
</head>
<body>
    <h2>システムログイン</h2>
    <h3>認証システム</h3>
    
    <form action="/login_handler/" method="post">
        <label for="user_id">ユーザーID: </label>
        <input type="text" id="user_id" name="user_id"><br><br>
        
        <label for="pass_key">パスワード: </label>
        <input type="password" id="pass_key" name="pass_key"><br><br>
        
        <button type="submit">ログイン</button>
        
        {% csrf_token %}
        <p style="color:red">{{error_message}}</p>
    </form>
</body>
</html>

ログイン処理ロジック

フォーム送信を受け付ける処理関数を実装します。

from django.http import HttpResponse
from django.shortcuts import render, redirect

def login_handler(request):
    if request.method == 'POST':
        user_id = request.POST.get('user_id')
        pass_key = request.POST.get('pass_key')
        
        if user_id and pass_key:
            if user_id == 'administrator' and pass_key == 'securepass':
                return redirect('/dashboard/')
            else:
                return render(request, 'login_form.html', 
                            {'error_message': '認証情報が正しくありません'})
        else:
            return render(request, 'login_form.html', 
                        {'error_message': '必須項目が入力されていません'})
    else:
        return render(request, 'login_form.html')

ダッシュボードページへの遷移

認証成功後に表示するダッシュボード用のテンプレートを作成し、リダイレクト処理を実装します。

タグ: Django Python Web開発 認証 ログイン機能

8月2日 21:46 投稿