Удаление HTML-тегов в сообщениях Django

В основном у меня есть представление с Django, где я добавляю некоторые сообщения, например, такие:

from django.contrib import messages

def myView(request):
    #some stuff
    messages.error(request, "My message here")
    return render(request, "myApp/myTemplate.html", context = data)

Затем я печатаю их в шаблоне следующим образом:

{% if messages %}
    {% for message in messages %}
        <div>{{ message }}</div>
    {% endfor %}
{% endif %}

Но проблема в том, что фреймворк сообщений добавляет HTML-теги к сообщению, и когда сообщение печатается, добавляются теги <ul> и <li>. Поэтому после вывода шаблона на печать он выглядит следующим образом:

<div><ul class="errorlist"><li>My message here</li></ul></div>

Я хотел бы узнать, есть ли способ избежать добавления в сообщение этих html-тегов. Также мне нужно, чтобы это было и вне шаблона, так что в модульных тестах я могу сделать что-то подобное:

messages = list(response.context["messages"])
self.assertEquals(len(messages), 1)
self.assertEquals(str(messages[0]), 'My message here')

Есть ли способ достичь этого?

В настоящее время использую Python 3 и Django 4

Обратите внимание, что я хотел бы полностью обойтись без фреймворка для добавления тегов, поэтому мне не нужно использовать striptags фильтр.

Тег Html появляется потому, что вы даете тег div, если вы пишете только {{message}} внутри цикла что-то вроде:

{% if messages %}
    {% for message in messages %}
        {{message}}
    {% endfor %}
{% endif %}

Так что все будет работать отлично.

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