Как отобразить сообщения об ошибках для функции логирования в Django?

Я новый Django Developer, и у меня возникли проблемы с функцией входа в систему. Моя проблема заключается в том, что моя система не показывает сообщения об ошибках, хотя они недействительны. Я пытаюсь ввести неправильное имя пользователя и пароль, и я ожидаю, что появятся сообщения об ошибках. Однако это не работает. Вот мой код:

login_register.html

    <div class="login-form">
      <form action="" method="POST">
        {% csrf_token %}
        {% if form.errors %}
          {% for field in form %}
              {% for error in field.errors %}
                  <p> {{ error }} </p>
              {% endfor %}
          {% endfor %}
        {% endif %}
    
    
        <h2 class="text-center">Sign in</h2>
        <div class="form-group">
          <div class="input-group">
            <div class="input-group-prepend">
              <span class="input-group-text">
                <span class="fa fa-user"></span>
              </span>
            </div>
            <input
              type="text"
              class="form-control"
              name="username"
              placeholder="Username"
              required="required"
            />
          </div>
        </div>
        <div class="form-group">
          <div class="input-group">
            <div class="input-group-prepend">
              <span class="input-group-text">
                <i class="fa fa-lock"></i>
              </span>
            </div>
            <input
              type="password"
              class="form-control"
              name="password"
              placeholder="Password"
              required="required"
            />
          </div>
        </div>
        <div class="form-group">
          <button type="submit" class="btn btn-primary login-btn btn-block">
            Sign in
          </button>
        </div>
        <div class="clearfix">
          <a href="{% url 'reset_password' %}" class="text-center"
            >Forgot Password?</a
          >
        </div>
      </form>
    
      
      <p class="text-center text-muted small">
        Don't have an account? <a href="{% url 'register' %}">Register here!</a>
      </p>
    </div>

view.py

def loginUser(request):
    page = 'login'

    if request.user.is_authenticated:
        return redirect('starting-page')

    if request.method == 'POST':
        username = request.POST['username'].lower()
        password = request.POST['password']

        try:
            user = User.objects.get(username=username)
        except:
            messages.error(request, 'Username does not exist')

        user = authenticate(request, username=username, password=password)

        if user is not None:
            login(request, user)
            return redirect(request.GET['next'] if 'next' in request.GET else 'starting-page')
            # return redirect('starting-page')

        else:
            messages.error(request, 'Username OR password is incorrect')

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

form.py

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

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'})

urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.loginUser, name="login"),
    path('login/', views.loginUser, name="login"),
    path('logout/', views.logoutUser, name="logout"),
    path('register/', views.registerUser, name="register"),
]

Надеюсь, вы поможете мне решить эту проблему. Большое спасибо!

Попробуйте внедрить приведенный ниже код в свой шаблон. Если есть какие-либо сообщения, добавленные в просмотр, они будут отображены.

{% for message in messages %}
    <div class="alert alert-info">{{message}}</div>
{% endfor %}
Вернуться на верх