【问题标题】:Password Confirmation error not displayed in django forms密码确认错误未显示在 django 表单中
【发布时间】:2019-10-29 18:39:53
【问题描述】:

我尝试比较密码和确认密码。如果我输入不同的密码,它不会引发错误并重定向到登录页面。

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()

当我输入不同的密码时,我希望输出会显示密码不匹配错误

我正在使用带有 sqlite3 数据库的 pycharm 软件和 django 框架。

【问题讨论】:

    标签: django sqlite


    【解决方案1】:
    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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-14
      • 1970-01-01
      • 2017-09-02
      • 1970-01-01
      • 2012-04-05
      • 2011-01-11
      • 2017-10-20
      相关资源
      最近更新 更多