我正在尝试在通过新的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>"))
管理base.html模板中模板代码的显示非常简单:
{% if messages %}
<ul class="messagelist">{% for message in messages %}<li>{{ message }}</li>{% endfor %}</ul>
{% endif %}
所以我不太确定我做错了什么。
非常感谢您的意见或指导,谢谢!
发布于 2012-04-12 21:44:03
另一种选择是使用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 %}
发布于 2012-01-04 17:49:42
正如下面的Django ticket中所指出的,如果您将mark_safe()与SessionStorage后端结合使用,它应该可以工作:https://code.djangoproject.com/ticket/14976#comment:9
发布于 2018-04-04 17:50:35
这对我很有效(Django 1.11):
from django.contrib import messages
from django.utils.safestring import mark_safe
messages.info(request, mark_safe('This is link to <a href="http://google.com">http://google.com</a>'))
https://stackoverflow.com/questions/2053258
复制相似问题