首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在新的Django消息框架中输出消息中的HTML?

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

Stack Overflow用户
提问于 2010-01-13 07:30:27
回答 7查看 26.1K关注 0票数 71

我正在尝试在通过新的Django消息框架显示的消息中显示一些html。具体地说,我是通过ModelAdmin.message_user方法来实现这一点的,它只是messages()的一个薄薄的包装器:

代码语言:javascript
复制
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。

代码语言:javascript
复制
self.message_user(request, "<a href=\"http://www.google.com\">Here's google!</a>")

不工作,也不工作:

代码语言:javascript
复制
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模板中模板代码的显示非常简单:

代码语言:javascript
复制
    {% if messages %}
    <ul class="messagelist">{% for message in messages %}<li>{{ message }}</li>{% endfor %}</ul>
    {% endif %}

所以我不太确定我做错了什么。

非常感谢您的意见或指导,谢谢!

EN

回答 7

Stack Overflow用户

发布于 2012-04-12 21:44:03

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

代码语言:javascript
复制
messages.error(request, 'Here is a <a href="/">link</a>', extra_tags='safe')

然后使用模板逻辑来使用安全筛选器

代码语言:javascript
复制
{% for message in messages %}
    <li class="{{ message.tags }}">
    {% if 'safe' in message.tags %}{{ message|safe }}{% else %}{{ message }}{% endif %}
    </li>
{% endfor %}
票数 90
EN

Stack Overflow用户

发布于 2012-01-04 17:49:42

正如下面的Django ticket中所指出的,如果您将mark_safe()与SessionStorage后端结合使用,它应该可以工作:https://code.djangoproject.com/ticket/14976#comment:9

票数 26
EN

Stack Overflow用户

发布于 2018-04-04 17:50:35

这对我很有效(Django 1.11):

代码语言:javascript
复制
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>'))
票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2053258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档