Djangoでユーザーログイン機能を実装する方法は何ですか?

Djangoにおけるユーザーログイン機能の実装では、通常、以下の手順が必要です。

  1. Djangoの組み込みフォームモジュール(例:django.forms)を使用して、ユーザーログインフォームを作成する。ユーザー名とパスワードのフィールドを含める。
  2. views.pyファイルにログインリクエストを処理するためのビューを作成します。ユーザーが送信したログインフォームのデータを処理するためのビュー関数を作成します。ユーザー名とパスワードが正しいかどうかを確認するために、Djangoの組込み認証モジュール(例:django.contrib.auth)を使用することができます。
  3. ログインページを作成します:templatesフォルダにログインページのHTMLテンプレートを作成し、ユーザー名とパスワードの入力欄、ログインボタンを含めます。フォームフィールドとエラーメッセージをレンダリングするためにDjangoのテンプレート言語(Template Language)を使用します。
  4. urls.pyファイルにログイン用のURLルートを設定し、ユーザーがアクセスするログインページを以前に作成したビュー関数にマッピングします。
  5. ログインロジックの処理:ビュー関数内でユーザーのログインロジックを処理し、ユーザーが入力したユーザー名とパスワードの検証、ユーザーセッション(Session)の作成などを行う。
  6. ユーザーログイン画面でのリダイレクトを実装する:ログイン成功後、別のページにユーザーを転送するか、ログイン成功のメッセージを表示する。

以下是一个简单的示例代码:

フォーム.py:

from django import forms

class LoginForm(forms.Form):
    username = forms.CharField(label='用户名')
    password = forms.CharField(label='密码', widget=forms.PasswordInput)

ビュー.py:

from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login
from .forms import LoginForm

def user_login(request):
    if request.method == 'POST':
        form = LoginForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data['username']
            password = form.cleaned_data['password']
            user = authenticate(username=username, password=password)
            if user:
                login(request, user)
                return redirect('home')
            else:
                error_message = '用户名或密码错误,请重试。'
    else:
        form = LoginForm()

    return render(request, 'login.html', {'form': form})

urls.pyファイル:

from django.urls import path
from . import views

urlpatterns = [
    path('login/', views.user_login, name='login'),
]

ログインページ:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户登录</title>
</head>
<body>
    <h1>用户登录</h1>
    <form method="post">
        {% csrf_token %}
        {{ form }}
        <input type="submit" value="登录">
    </form>
    {% if error_message %}
        <p>{{ error_message }}</p>
    {% endif %}
</body>
</html>

上記のコードでは、ユーザーがユーザー名とパスワードを入力してフォームを送信すると、ビュー関数user_loginがユーザーの入力したユーザー名とパスワードを検証します。検証が成功した場合はユーザーをログインさせ、ホームページにリダイレクトします。失敗した場合はログインページに戻り、エラーメッセージを表示します。

bannerAds