Как я могу решить логику валидации в Django

В этом коде, если он всегда показывает, что пароль не совпадает, когда я все еще даю правильный пароль. Я не могу понять, что именно здесь происходит! Пожалуйста, помогите мне с этим.

def Guide_register(request):
    if request.method == 'POST':
        firstname = request.POST.get('first_name')
        lastname = request.POST.get('last_name')
        username = request.POST.get('username')
        email = request.POST.get('email')
        password1 = request.POST.get('password1')
        password2 = request.POST.get('password2')
        image = request.POST.get('image')
        city = request.POST.get('city')

        if password1 == password2:
            if Guide_Register.objects.filter(username=username).exists():
                messages.error(request,'Username already exists!')
                return redirect('guideregister')
            else:
                if Guide_Register.objects.filter(email=email).exists():
                    messages.error(request,'Email already exists!')
                    return redirect('guideregister')
                else:
                    guide = Guide_Register.objects.create(first_name=firstname,last_name=lastname,username=username,email=email,password=password1,confirm_password=password2,guide_photo=image,city=city)
                    messages.success(request,'You are registered successfully as Guide!')
                    return redirect('guidelogin')
        else:
            messages.error(request,'Password does not match!')
            return redirect('guideregister')

    else:
     return render(request,'accounts/guide_register.html')

Настоятельно рекомендуется использовать Django forms при выполнении валидации форм, возможно, вы захотите взглянуть на него. Вам потребуется написать пользовательскую функцию def clean(self, cleaned_data) в классе формы для проверки соответствия password1 и password2, чтение этого раздела может быть полезным.

Что касается вашей проблемы, я подозреваю, что в ваших размещенных данных не хватает password1 или password2, вы можете проверить на стороне шаблона, что у вас есть поля ввода для password1 и password2:

<input name="password1" type="password" />
<input name="password2" type="password" />

Чтобы проверить, что именно публикуется, вы можете отладить, используя print(request.POST) перед if password1 == password2: и проверить, что получает бэкенд.

Вернуться на верх