How do I output HTML in a message in the new Django messages framework?

django

Solution

Another option is to use `extra_tags` keyword arg to indicate that a message is safe. Eg

messages.error(request, 'Here is a <a href="/">link</a>', extra_tags='safe')

then use template logic to use the safe filter

{% for message in messages %}
    <li class="{{ message.tags }}">
    {% if 'safe' in message.tags %}{{ message|safe }}{% else %}{{ message }}{% endif %}
    </li>
{% endfor %}

Problem

I'm trying to display a bit of html in a message that's being displayed via the new Django messages framework. Specifically, I'm doing this via the ModelAdmin.message_user method, which is just a thin wrapper around messages(): ``` def message_user(self, request, message): """ Send a message to the user. The default implementation posts a message using the django.contrib.messages backend. """ messages.info(request, message) ``` Everything I've tried so far seems to display escaped HTML. ``` self.message_user(request, "<a href=\"http://www.google.com\">Here's google!</a>") ``` Doesn't work, nor does: ``` from django.utils.safestring import mark_safe ... self.message_user(request, mark_safe("<a href=\"http://www.google.com\">Here's google!</a>")) ``` The display of the template code in the admin base.html template is pretty straightforward: ``` {% if messages %} <ul class="messagelist">{% for message in messages %}<li>{{ message }}</li>{% endfor %}</ul> {% endif %} ``` So I'm not exactly sure what I am doing wrong. Thoughts or guidance greatly appreciated, thanks!

Original source

Related problems