Rssからフィードを取得し、データをappengineデータベースに保存します。 RSSフィードのコンテンツには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())
そして私のhtmlテンプレートは次のようになります:
{% extends "layout.html" %}
{% block body %}
{{ data }}
{% endblock %}
したがって、実際のhtmlマークアップが表示されているページを表示するときに、htmlデータをエスケープ解除するにはどうすればよいですか?
data=Markup(feedItem.html)
の代わりにdata=Markup(feedItem.html).unescape()
を使用する必要があります。それは正しいことをし、あなたのテンプレートをきれいに保ちます。
ここでunescape()を呼び出すことは無意味です(feeditem.htmlに事前にエスケープされたhtmlが含まれている場合を除きますが、おそらく含まれていません)。さらに重要なことに、マークアップオブジェクトの代わりに文字列/ユニコードオブジェクトを生成することにより、エスケープが必要なhtmlとしてフィールドを認識するJinja2の機能を妨害します。エスケープを自動的に処理するJinja2の機能を効果的に破棄し(これがMarkupクラスの目的です!)、代わりに、将来のテンプレートメンテナに、このフィールドには手動でのエスケープが必要であることを覚えてもらい、追加の呼び出しでテンプレートコードを乱雑にする必要があります。 。
これも機能するはずです。
{% extends "layout.html" %}
{% block body %}
{{ data|safe }}
{% endblock %}