Ошибка не отображается, валидация формы с помощью Django

Я только начал изучать Django для моего нового проекта форума, я пытаюсь разобраться в нем самостоятельно, но эта проблема беспокоит меня уже 2 дня. Я пытаюсь сделать валидацию регистрации для моей формы, я использую messages.error(request, "Text"), чтобы ошибка появлялась на экране, но это не работает, и просто ничего не показывает.

Вот часть моего HTML кода:

    <div class="limiter">
        <div class="container-login100" style="background:black;">
            <div class="wrap-login100">
                <form class="login100-form validate-form"  method='POST' action="{% url 'users:register' %}" >
                    {% csrf_token %}
                    <span class="login100-form-logo">
                        <i class="zmdi zmdi-landscape"></i>
                    </span>
    
                    <span class="login100-form-title p-b-34 p-t-27">
                        Register
                    </span>
    
                    <div class="wrap-input100 validate-input" data-validate = "Enter username">
                        <input class="input100" type="text" name="username" placeholder="Username" required>
                        <span class="focus-input100" data-placeholder="&#xf207;"></span>
                    </div>
    
                    <div class="wrap-input100 validate-input" data-validate="Enter password">
                        <input class="input100" type="password" name="pass" placeholder="Password" required>
                        <span class="focus-input100" data-placeholder="&#xf191;"></span>
                    </div>
    
                    <div class="wrap-input100 validate-input" data-validate="Confirm password">
                        <input class="input100" type="password" name="pass-confirm" placeholder="Confirm Password" required>
                        <span class="focus-input100" data-placeholder="&#xf191;"></span>
                    </div>
    
                    <div class="wrap-input100 validate-input" data-validate="Enter Email">
                        <input class="input100" type="email" name="mail" placeholder="E-Mail" required>
                        <span class="focus-input100" data-placeholder="&#xf191;"></span>
                    </div>
    
                    <div class="container-login100-form-btn">
                        <button class="login100-form-btn">
                            Register
                        </button>
                    </div>
    
                    <div class="text-center p-t-90">
                        <a class="txt1" href="login">
                            Already registered?
                        </a>
                    </div>
    
                </form>
            </div>
        </div>
    </div>

Вот моя функция регистрации views.py:

def register(request):
    if request.method == "POST":
        username = request.POST["username"]
        password = request.POST["pass"]
        password_confirm = request.POST["pass-confirm"]
        email = request.POST["mail"]

        
        print("UserName : ", username)
        print('Email : ', email)
        print('Password : ', password)
        print('Password Confirm : ', password_confirm)

        if len(username) < 7:
            # print works, so I know that these POST variables are successfully transmitted.
            print('Username must be more than 10 char.')
            messages.error(    #messages.error won't show up. 
                request, "Username must be more than 10 char.", 'red')
            return HttpResponseRedirect(reverse('users:register'))
        
        if len(password) < 8:
            print("Your password is too short")
            messages.error(request, "Your password is too short.", 'red')
            return HttpResponseRedirect(reverse('users:register'))
        
        if (password != password_confirm):
            print("Passwords don't match")
            messages.error(request, "Passwords don't match.", 'red')
            return HttpResponseRedirect(reverse('users:register'))
        
        else:
            messages.success(request, "Success! form submitted.", 'green')
            return HttpResponseRedirect(reverse('users:register'))
        

    return render(request, 'users/register.html')

Стилизация для messages.error:

.green{
  color:green;
  font-size:1.3rem;
}
.red{
  color:red;
  font-size:1.3rem;
}

Пожалуйста, скажите мне, если я делаю это совершенно неправильно, я не использую POST API из Django, поскольку не знаю, как применить к нему свой собственный стиль.

Везде, где вы выводите сообщения внутри ваших шаблонов, вы можете добавить этот фрагмент кода.

источник: django allauth custom messages: Стилизация сообщений с помощью html/css

<div class="alert alert-{{ messages.tags }} alert-dismissible" role="alert">
    <button type="button" class="close" data-dismiss="alert" aria-label="Close">
        <span aria-hidden="true">&times;</span>
    </button>
    {{ message }}
</div>

Дайте мне знать, если это сработает для вас.

После django-doc можно использовать простой формат визуализации messages.

Попробуйте следующий формат отображения сообщений.

{% if messages %}
<ul class="messages">
    {% for message in messages %}
    <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
    {% endfor %}
</ul>
{% endif %}

Добавьте вышеуказанный формат рендеринга сообщений в верхней части html-файла или в любом другом месте, как:

{% if messages %}
<ul class="messages">
    {% for message in messages %}
    <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
    {% endfor %}
</ul>
{% endif %}

  <div class="limiter">
        <div class="container-login100" style="background:black;">
            <div class="wrap-login100">
                <form class="login100-form validate-form"  method='POST' action="{% url 'users:register' %}" >
                    {% csrf_token %}
                    <span class="login100-form-logo">
                        <i class="zmdi zmdi-landscape"></i>
                    </span>
    
                    <span class="login100-form-title p-b-34 p-t-27">
                        Register
                    </span>
    
                    <div class="wrap-input100 validate-input" data-validate = "Enter username">
                        <input class="input100" type="text" name="username" placeholder="Username" required>
                        <span class="focus-input100" data-placeholder="&#xf207;"></span>
                    </div>
    
                    <div class="wrap-input100 validate-input" data-validate="Enter password">
                        <input class="input100" type="password" name="pass" placeholder="Password" required>
                        <span class="focus-input100" data-placeholder="&#xf191;"></span>
                    </div>
    
                    <div class="wrap-input100 validate-input" data-validate="Confirm password">
                        <input class="input100" type="password" name="pass-confirm" placeholder="Confirm Password" required>
                        <span class="focus-input100" data-placeholder="&#xf191;"></span>
                    </div>
    
                    <div class="wrap-input100 validate-input" data-validate="Enter Email">
                        <input class="input100" type="email" name="mail" placeholder="E-Mail" required>
                        <span class="focus-input100" data-placeholder="&#xf191;"></span>
                    </div>
    
                    <div class="container-login100-form-btn">
                        <button class="login100-form-btn">
                            Register
                        </button>
                    </div>
    
                    <div class="text-center p-t-90">
                        <a class="txt1" href="login">
                            Already registered?
                        </a>
                    </div>
    
                </form>
            </div>
        </div>
    </div>

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