Сообщение о проверке формы для поля подтверждения пароля

У меня есть следующий код в forms.py файле.

from django.contrib.auth.forms import UserCreationForm
from .models import User

class CustomUserCreationForm(UserCreationForm):
    class Meta:
        model = User        
        fields = ('first_name','last_name','email','date_of_birth', 'gender', 'user_type', 'phone', 'address','photo', 'password' )
        error_messages = {
            field: {
                'required': f"{field.replace('_', ' ').title()} is required."
            }
            for field in fields
        }

Я хочу добавить 'password_confirmation' поле в fields кортеж.

Я хотел бы использовать сообщение о валидации формы, как показано ниже, в моем HTML-шаблоне.

<label class="form-label">PassWord Confirmation</label>
<input type="password" class="form-control" name="password2" />                                
{% if form.confirm_password.errors %}
    <div class="alert alert-danger">{{ form.confirm_password.errors }}</div>
{% endif %}

Но я получаю ошибки django.core.exceptions.FieldError: Unknown field(s) () specified for User.

Джанго UserCreationForm ожидает password1 и password2 для пароля и подтверждения пароля соответственно. UserCreationForm уже включает валидацию, чтобы убедиться, что эти два параметра совпадают.

Не добавляйте password_confirmation к кортежу fields. Вместо этого используйте поля password1 и password2, которые уже включены в UserCreationForm.

from django.contrib.auth.forms import UserCreationForm
from .models import User

class CustomUserCreationForm(UserCreationForm):
    class Meta:
        model = User
        fields = ('first_name','last_name','email','date_of_birth', 'gender', 'user_type', 'phone', 'address','photo')
        error_messages = {
            fields: {
                'required': f"{field.replace('_', ' ').title()} is required."
            }
            for field in fields
        }

В шаблоне HTML используйте password2 для поля подтверждения пароля:

<label class="form-label">PassWord Confirmation</label>
<input type="password" class="form-control" name="password2" />                                
{% if form.password2.errors %}
    <div class="alert alert-danger">{{ form.password2.errors }}</div>
{% endif %}

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