Добавить поле подтверждения пароля в модели формы в django только с одним полем пароля - PullRequest
1 голос
/ 02 апреля 2020

Я хочу добавить поле подтверждения пароля в django modelform и подтвердить оба пароля и подтвердить пароль. После ввода данных через шаблон эти данные будут храниться в базе данных. Но только три поля будут добавлены в базу данных, такие как имя, фамилия и адрес электронной почты. Итак, я хочу добавить данные всех полей в базу данных.

Вот моя модель:

class Register(models.Model):
    first_name = models.CharField(max_length=30, blank=False)
    last_name = models.CharField(max_length=30, blank=False)
    email = models.EmailField(max_length=50, blank=False)
    password = models.CharField(max_length=12, blank=False)

Вот моя модель:

class SignUpForm(forms.ModelForm):
    password = forms.CharField(widget=forms.PasswordInput())
    password_confirm = forms.CharField(widget=forms.PasswordInput())

    class Meta:
       model = Register
       fields = ['first_name', 'last_name', 'email','password']

     def clean(self):
        cleaned_data = super(SignUpForm, self).clean()
        password = cleaned_data.get("password")
        confirm_password = cleaned_data.get("password_confirm")

        if password != confirm_password:
            raise forms.ValidationError(
            "password and confirm_password does not match"
            )

Вот мой файл view.py:

def auth_register(request):
    if request.method == 'POST':
        form = SignUpForm(request.POST)
        if form.is_valid():
           form.save()
           return HttpResponse('data has been saved...!!')
    else:
        form = SignUpForm()
    return render(request, 'auth-register.html', {'form': form})

Вот код шаблона:

 <form method="post" action="">{%csrf_token%}

              <div class="row">
                <div class="form-group col-6">
                  <label for="first_name">First Name : </label>
                  <input id="first_name" type="text" class="form-control" name="first_name" autofocus="">
                </div>

                <div class="form-group col-6">
                  <label for="last_name">Last Name : </label>
                  <input id="last_name" type="text" class="form-control" name="last_name">
                </div>
              </div>

              <div class="form-group ">
                <label for="email">Email : </label>
                <input id="email" type="email" class="form-control" name="email">
                <div class="invalid-feedback">
                </div>
                </div>

              <div class="row">
                <div class="form-group col-6">
                  <label for="password1" class="d-block">Password</label>
                  <input id="password1" type="password" class="form-control pwstrength" data-indicator="pwindicator" name="password1">
                  <div id="pwindicator" class="pwindicator">
                    <div class="bar"></div>
                    <div class="label"></div>
                  </div>
                </div>

                <div class="form-group col-6">
                  <label for="password_confirm" class="d-block">Password Confirmation</label>
                  <input id="password_confirm" type="password" class="form-control" name="password2">
                </div>
              </div>

                <div class="form-group">
                <div class="custom-control custom-checkbox">
                  <input type="checkbox" name="agree" class="custom-control-input" id="agree">
                  <label class="custom-control-label" for="agree">I agree with the terms and conditions</label>
                </div>
                </div>

              <div class="form-group">
                <button type="submit" class="btn btn-primary btn-lg btn-block">
                  Register
                </button>
              </div>
            </form>
...