ari*_*nte 23 python jinja2 flask
我从rss中提取一个feed并将数据存储在appengine db中.rss feed内容包括整个html.所以我有这个python代码:
@app.route("/rssRead")
def pullRss():
feedItem = db.getFeedItemByName(request.args.get('title',None), request.args.get('key',None))
return render_template("rss.html", data= Markup(feedItem.html).unescape())
Run Code Online (Sandbox Code Playgroud)
我的html模板看起来像这样:
{% extends "layout.html" %}
{% block body %}
{{ data }}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
因此,当我查看页面时,我显示了实际的html标记,如何取消html数据?
Phi*_*ham 100
这应该也有效.
{% extends "layout.html" %}
{% block body %}
{{ data|safe }}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
ʇsә*_*ɹoɈ 12
你应该使用data=Markup(feedItem.html)而不是data=Markup(feedItem.html).unescape().这将做正确的事情并保持模板清洁.
在这里调用unescape()是没有意义的(除非feeditem.html包含预先转义的html,它可能没有).更重要的是,它通过生成字符串/ unicode对象而不是Markup对象来干扰Jinja2识别该字段为需要转义的html的能力.你有效地抛弃了Jinja2自动处理转义的能力(这就是Markup类的目的!)而是强迫你的未来模板维护者记住这个字段需要手动转义并且通过额外的调用来混淆模板代码.
| 归档时间: |
|
| 查看次数: |
24165 次 |
| 最近记录: |