Django отправляет в ответ только оповещение, а не полный шаблон

Как отправить только сообщение об оповещении в ответ на запрос вместо того, чтобы отправлять шаблон, созданный только для оповещения?

Я использую асинхронный вызов Javascript. Мне нужно, чтобы в html-ответе оповещения отображалось только InnerHTML.

Я также использую Bootstrap. Мне нужен тип сообщения, чтобы Bootstrap мог отобразить правильный цвет/css.

Настройки.py с типами оповещений Bootstrap.

MESSAGE_TAGS = {
        messages.DEBUG: 'alert-secondary',
        messages.INFO: 'alert-info',
        messages.SUCCESS: 'alert-success',
        messages.WARNING: 'alert-warning',
}

View

@login_required(login_url="/login/")
@csrf_protect
def usersave(request):
msg = messages.add_message(request, messages.WARNING, "This is a demo. First complete all info to save.")
return render(request, msg)   # Want to send just msg instead of a template for an alert. 

Шаблон

{% if messages %}
    <div class="container text-center my-3">
        {% for message in messages %}
                <div class="alert {{ message.tags }} alert-dismissible fade show" role="alert">
                    <span id="alertmessage">{{ message }}</span>
                    <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
                </div>
        {% endfor %}
    </div>
{% endif %} 

Если вы используете асинхронный вызов, например fetch, и хотите, чтобы api возвращало обычное текстовое сообщение, вы можете вернуть простое HttpResponse или JsonResponse вместо использования функции render:

from django.http import HttpResponse


@login_required(login_url="/login/")
@csrf_protect
def usersave(request):
    # Your logic here
    alert = '''
        <div class="alert alert-primary" role="alert">
            This is a demo. First complete all info to save.
        </div>
    '''
    return HttpResponse(alert)

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