Ошибка подтверждения пароля не отображается в формах Django - PullRequest
0 голосов
/ 15 июня 2019

Я пытался сравнить пароль и подтверждение пароля.Если я ввожу другой пароль, он не вызывает ошибку и перенаправляет на страницу входа.

models.py

class reg1(models.Model):
    name=models.CharField(max_length=100)
    city=models.CharField(max_length=100)
    email=models.CharField(max_length=100)
    username=models.CharField(max_length=100)
    password=models.CharField(max_length=100)
    cpassword=models.CharField(max_length=100)
    class Meta:
        db_table='reg1'

forms.py

class regform(forms.Form):
    name = forms.CharField(max_length=100)
    city = forms.CharField(max_length=100)
    email = forms.CharField(max_length=100)
    username = forms.CharField(max_length=100)
    password = forms.CharField(max_length=100)
    cpassword=forms.CharField(max_length=100)

    def clean_password(self):
        if self.data['password'] != self.data['cpassword']:
            raise forms.Error('Passwords are not the same')
        return self.data['password']

views.py

if myregform.is_valid():
    name1 = myregform.cleaned_data['name']
    city1 = myregform.cleaned_data['city']
    email = myregform.cleaned_data['email']
    username1 = myregform.cleaned_data['username']
    password1 = myregform.cleaned_data['password']
    password2=myregform.cleaned_data['cpassword']
    a=reg1(name=name1,city=city1,email=email,
         username=username1,password=password1,cpassword=password2)
    a.save()

Я ожидаю, что при вводе другого пароля он покажет пароль, не совпадающий с ошибкой

Я использую программное обеспечение pycharm и инфраструктуру django с базой данных sqlite3.

1 Ответ

0 голосов
/ 15 июня 2019
  1. Используйте ModelForm, чтобы сэкономить кучу текста.
  2. Вам необходимо использовать clean() для проверки данных, относящихся к другим полям.
  3. Вам нужно поднять ValidationErrors.
class reg1(models.Model):
    name = models.CharField(max_length=100)
    city = models.CharField(max_length=100)
    email = models.CharField(max_length=100)
    username = models.CharField(max_length=100)
    password = models.CharField(max_length=100)
    cpassword = models.CharField(max_length=100)

    class Meta:
        db_table = "reg1"


class regform(forms.ModelForm):
    class Meta:
        model = reg1
        exclude = ()

    def clean(self, cleaned_data):
        if cleaned_data["password"] != cleaned_data["cpassword"]:
            raise forms.ValidationError("Passwords are not the same")
        return cleaned_data


# ...

if myregform.is_valid():
    a = myregform.save()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...