如何在新的Django消息框架中的消息中输出HTML?

我试图在通过新的Django消息框架显示的消息中显示一些html。具体来说,我是通过ModelAdmin.message_user方法执行此操作的,该方法只是围绕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)

到目前为止,我尝试过的所有内容似乎都显示了转义的HTML。

self.message_user(request, "<a href=\"http://www.google.com\">Here's google!</a>")

不起作用,也不会:

from django.utils.safestring import mark_safe

...

self.message_user(request, mark_safe("<a href=\"http://www.google.com\">Here's google!</a>"))

admin base.html模板中模板代码的显示非常简单:

    {% if messages %}

<ul class="messagelist">{% for message in messages %}<li>{{ message }}</li>{% endfor %}</ul>

{% endif %}

因此,我不确定自己在做什么错。

回答:

另一个选择是使用extra_tags关键字arg指示消息是安全的。例如

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

然后使用模板逻辑来使用安全过滤器

{% for message in messages %}

<li class="{{ message.tags }}">

{% if 'safe' in message.tags %}{{ message|safe }}{% else %}{{ message }}{% endif %}

</li>

{% endfor %}

以上是 如何在新的Django消息框架中的消息中输出HTML? 的全部内容, 来源链接: utcz.com/qa/415703.html

回到顶部