Удаление 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 %}
Так что все будет работать отлично.