Text unikl, když chci, aby to ukázat jako HTML v baňce / jinja2

hlasů
21

I vytáhnout zdroj z RSS a ukládat data do rozhraní platformy App Engine db. Obsah RSS zahrnuje celý html. Takže mám tento kód v jazyce 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())

A můj html šablony vypadá takto:

{% extends layout.html %}
{% block body %}
` data `
{% endblock %}

Takže když jsem zobrazení stránky jsem se zobrazí aktuální html značkovací, jak mám unescape data HTML?

Položena 06/04/2011 v 20:55
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
12

Ty by měly být s použitím data=Markup(feedItem.html)místo data=Markup(feedItem.html).unescape().

Za předpokladu, že feedItem.html již nebyla unikl, unescape () nemá nic společného tady a je proto zbytečný volání metody. Aby toho nebylo málo, vrátí / unicode objekt řetězec namísto objektu Markup, což Jinja2 žádný způsob, jak vědět, že unikající je zbytečné při vykreslování. Jinými slovy, za použití unescape () tady zbytečně Clutterových jak python kód a kód šablony a zbytečně tlačí na šablonu skutečných správců navíc zodpovědnost vědět do speciálního případu toto pole ve svých šablonách.

Odpovězeno 06/04/2011 v 21:30
zdroj uživatelem

hlasů
84

To by mělo fungovat také.

{% extends "layout.html" %}
{% block body %}
{{ data|safe }}
{% endblock %}
Odpovězeno 07/04/2011 v 17:43
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more