我试图在通过新的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)
Run Code Online (Sandbox Code Playgroud)
到目前为止我尝试的所有内容似乎都显示了转义的HTML.
self.message_user(request, "<a href=\"http://www.google.com\">Here's google!</a>")
Run Code Online (Sandbox Code Playgroud)
不起作用,也不起作用:
from django.utils.safestring import mark_safe
...
self.message_user(request, mark_safe("<a href=\"http://www.google.com\">Here's google!</a>"))
Run Code Online (Sandbox Code Playgroud)
admin base.html模板中模板代码的显示非常简单:
{% if messages %}
<ul class="messagelist">{% for message in messages %}<li>{{ message }}</li>{% endfor %}</ul>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
所以我不确定我做错了什么.
非常感谢您的想法或指导,谢谢!
Dav*_*tom 76
另一种选择是使用extra_tags关键字arg来指示消息是安全的.例如
messages.error(request, 'Here is a <a href="/">link</a>', extra_tags='safe')
Run Code Online (Sandbox Code Playgroud)
然后使用模板逻辑来使用安全过滤器
{% for message in messages %}
<li class="{{ message.tags }}">
{% if 'safe' in message.tags %}{{ message|safe }}{% else %}{{ message }}{% endif %}
</li>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
Dan*_*rts 16
你试过{{ message | safe }}吗?
在Django模板系统中,模板变量总是被转义,除非您使用safe过滤器将它们指定为安全.此默认设置甚至可以防止注意攻击.
我不确定它是如何与mark_safe交互的,但也许在它之间发生了一些让它再次变得不安全的事情.
您可以使用format_html。它适用于所有参数的转义。
例如,如果我们可以使用属性调用“name”链接到“mymodel”详细信息:
from django.contrib import messages
from django.utils.html import format_html
message = format_html("{} <a href='{}'>{}</a>",
"This is the mymodel",
reverse('myapp:mymodel-detail', args=(mymodel.id,)),
mymodel.name)
messages.info(request, message)
Run Code Online (Sandbox Code Playgroud)
这个答案基于/sf/answers/2362620221/
这对我有用(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>'))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20019 次 |
| 最近记录: |