Форма Django не подтверждается, как это исправить?

Я новичок в Django и я создавал магазин электронной коммерции с помощью Django. Я успешно создал форму входа пользователя, которая отлично работает, но я застрял на форме регистрации пользователя. Она не подтверждается.

Мой forms.py:

from django import forms
from django.forms.widgets import PasswordInput

class UserLoginForm(forms.Form):
    username = forms.CharField()
    password = forms.CharField(widget=forms.PasswordInput)


class UserRegistrationForm(forms.Form):
    username = forms.CharField()
    email = forms.EmailField()
    password = forms.CharField(widget=forms.PasswordInput)
    password2 = forms.CharField(label='Confirm password', widget=forms.PasswordInput)

    def clean(self):
        cleaned_data = super().clean()
        data = self.cleaned_data
        password = cleaned_data.get('password')
        password2 = cleaned_data.get('password2')

        if password2 != password:
            raise forms.ValidationError("Passwords must match")

        return data

Мой регистр.html

<div>
    <form method="POST" action="">
        {% csrf_token %}
        {{ form.as_p }}
        <input type="submit" name="Register">
    </form>
</div>

My login.html

<div>
    <form method="POST" action="">
        {% csrf_token %}
        {{ form.as_p }}
        <input type="submit" name="Login">
    </form>
</div>

Мой views.py

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

# Create your views here.

def userRegistrationPage(request):
    form = UserRegistrationForm()

    context = {
            'form': form
        }

    if request.method == 'POST':
        form = UserRegistrationForm(request.POST or None)

        if form.is_valid():
            username = form.cleaned_data.get("username")
            password = form.cleaned_data.get("password")
            print(username, password)
            
        else:
            print("Form is not valid")

    return render(request, 'index/register.html', context)

def userLoginPage(request):
    form = UserLoginForm()

    context = {
            'form': form
        }

    if request.method == 'POST':
        form = UserLoginForm(request.POST or None)

        if form.is_valid():
            username = form.cleaned_data.get("username")
            password = form.cleaned_data.get("password")
            user = authenticate(request, username=username, password=password)
            print(user)
            if user is not None:
                login(request, user)
                # Redirect to a success page.
                return redirect("/")
            else:
                print("Error")

    return render(request, 'index/login.html', context)

My urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name="index-page"), # Home Page
    path('register', views.userRegistrationPage, name='register'), #User Registeration Page
    path('login', views.userLoginPage, name='login'), #User Login Page
]

Каждый раз, когда я посещаю localhost:8000/register, я получаю сообщение Form is not valid от условия if/else при валидации формы в views.py. Я проделал аналогичный процесс с UserLoginForm и все работает отлично.

Я пытался обойти проблему и заглянул в документацию Django, но я не понимаю, что не так. Может ли кто-нибудь помочь мне, почему форма не подтверждается? Что я делаю неправильно? Буду признателен.

Не нужно возвращать данные после валидации формы методом clean

class UserRegistrationForm(forms.Form):
    username = forms.CharField()
    email = forms.EmailField()
    password = forms.CharField(widget=forms.PasswordInput)
    password2 = forms.CharField(label='Confirm password',widget=forms.PasswordInput)

    def clean(self):
        cleaned_data = super().clean()
        data = self.cleaned_data
        password = cleaned_data.get('password')
        password2 = cleaned_data.get('password2')

        if password2 != password:
            raise forms.ValidationError("Passwords must match")
Вернуться на верх