Django Form.errors can not display in templates

Viewed 20

Django form validation. I'm trying to submit the data form but form.errors can not display in the templates.

views

def registerUser(request):
    page = 'register'
    form = CustomUserCreationForm()

    if request.method == 'POST':
        form = CustomUserCreationForm(request.POST)
        if form.is_valid():
            user = form.save(commit=False)
            user.username = user.username.lower()
            user.save()

            messages.success(request, 'User account was created!')

            login(request, user)
            return redirect('edit-account')

        else:
            messages.success(
                request, 'An error has occurred during registration')

    context = {'page': page, 'form': form}
    return render(request, 'users/login_register.html', context)

template form

<form method="POST" action="{% url 'register' %}" class="form auth__form">
            {% csrf_token %}

            {% for field in form %}
            <div class="form__field">
                <label for="formInput#text">{{field.label}}</label>
                {{field}}

                <!-- {% if field.help_text %}
                <small>{{field.help_text}}</small>
                {% endif %} -->

                {% for error in field.errors %}
                <p style="color: red;">{{error}}</p>
                {% endfor %}

            </div>

            {% endfor %}

            <div class="auth__actions">
                <input class="btn btn--sub btn--lg" type="submit" value="Sign  In" />
            </div>
    </form>

I have not been able to understand why the error message can not display. any help is apriciated.

1 Answers
class CustomUserCreationForm(UserCreationForm):
    class Meta:
        model = User
        fields = ['first_name', 'email', 'username', 'password1', 'password2']
        labels = {
            'first_name': 'Name'
        }

    def __init__(self, *args, **kwargs):
        super(CustomUserCreationForm, self).__init__(*args, **kwargs)

        for name, field in self.fields.items():
            field.widget.attrs.update({'class': 'input'})

my error was :

super(CustomUserCreationForm, self).__init__() # forgot to pass the arguments 
Related