Сообщения Django не отображают сообщение

Я пытаюсь использовать django messages для уведомления пользователя об успешной или неуспешной отправке формы. Но ничего не появляется, когда я отправляю форму, независимо от того, что происходит. Я просмотрел код views.py и шаблон и, похоже, ничего не напутал. Я даже пробовал изменить бэкенд-хранилище сообщений по умолчанию на сессию, но ничего не вышло.

MESSAGE_STORAGE = 'django.contrib.messages.storage.session.SessionStorage'

views.py:

from django.shortcuts import render, HttpResponse, HttpResponseRedirect, redirect
from django.contrib import messages
from .forms import MyUserCreationForm
import bcrypt


def register(request):
    if request.method == "POST":
        # Populate form using submitted data
        form = MyUserCreationForm(request.POST)
        if form.is_valid():
            # Clone form model
            user = form.save(commit=False)
            password = user.password

            # Validate password length
            if len(password) > 25:
                messages.error(
                    request, "PASSWORD MUST BE LESS THAN OR EQUAL TO 25 CHARACTER LENGTH")

            # Hash user password
            bytes = password.encode('utf-8')
            salt = bcrypt.gensalt()
            hash = bcrypt.hashpw(bytes, salt)

            # Save modified form to database
            user.password = hash
            user.save()
            messages.success(request, "ACCOUNT CREATED SUCCESSFULLY!")
            messages.add_message(request, messages.INFO,
                                 'Thanks for reaching out! We will be in contact soon!',
                                 extra_tags='ex-tag')
            return redirect('register')
    # Create empty form
    form = MyUserCreationForm()
    return render(request, 'register.html', {'form': form})

templates/register.html:

{% extends "layout.html" %}

{% block title %}
Testing Registration
{% endblock %}

{% load static %}
{% load crispy_forms_tags %}

{% block main %}
<div class="container p-2 px-4 p-md-3">
    <div class="container-fluid p-0" style="height: 40px;"></div>
</div>
<div class="container">
    <div class="mx-auto ">
        <form method="POST" action="/register/">
            {% csrf_token %}
            {{ form | crispy }}
            <input type="submit" value="Submit" class="btn btn-primary mb-3">
        </form>
        {% if messages %}
        {% for message in messages %}
        <div class="alert alert-danger d-flex align-items-center alert-dismissible fade show" role="alert">
            <svg class="bi flex-shrink-0 me-2" role="img" aria-label="Danger:">
                <use xlink:href="#exclamation-triangle-fill" />
            </svg>
            <div>
                {{ message }}
            </div>
            <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
        </div>
        {% endfor %}
        {% endif %}
    </div>
</div>
{% endblock %}

settings.py:

Документация:

Если вы используете контекстный процессор, ваш шаблон должен быть отображаться с помощью RequestContext. В противном случае, убедитесь, что сообщения доступны для контекста шаблона.

https://docs.djangoproject.com/en/4.1/ref/contrib/messages/#displaying-messages

вы не отправляете сообщения или RequestContext в вашем контексте:

return render(request, 'register.html', {'form': form})

Пожалуй, это должно быть что-то вроде этого:

return render(request, 'register.html', {'form': form, 'messages':get_messages(request)})
Вернуться на верх