据我所知,flash()只需要字符串并在重定向页面中显示.我想通过flash发送html
message = "<h1>Voila! Platform is ready to used</h1>"
flash(message)
return render_template('output.html')
Run Code Online (Sandbox Code Playgroud)
output.html
<div class="flashes">
{% for message in get_flashed_messages()%}
{{ message }}
{% endfor %}
</div>
Run Code Online (Sandbox Code Playgroud)
但它显示为字符串<h1>Voila! Platform is ready to used</h1>是否有任何方法可以克服这个问题.
the*_*11s 36
使用{{message|safe}}将工作,但也为攻击者向您的页面注入恶意HTML或Javascript打开了大门,也称为XSS攻击.如果您有兴趣,请在此处获取更多信息.
在可能的情况下,更安全的方法是在将字符串传递给模板之前将其包装在Markup对象中:
Python代码:
from flask import Markup
message = Markup("<h1>Voila! Platform is ready to used</h1>")
flash(message)
return render_template('output.html')
Run Code Online (Sandbox Code Playgroud)
Jinja2模板:
<div class="flashes">
{% for message in get_flashed_messages() %}
{{ message }}
{% endfor %}
</div>
Run Code Online (Sandbox Code Playgroud)
使用safe过滤器:
<div class="flashes">
{% for message in get_flashed_messages()%}
{{ message|safe }}
{% endfor %}
</div>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20269 次 |
| 最近记录: |