Как я могу решить логику валидации в 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:
и проверить, что получает бэкенд.