web-dev-qa-db-fra.com

Passage de HTML au modèle à l'aide de Flask / Jinja2

Je construis un administrateur pour Flask et SQLAlchemy, et je souhaite transmettre le code HTML des différentes entrées à ma vue à l'aide de render_template. Le framework de templates semble échapper automatiquement au HTML, donc tous les <"'> sont convertis en entités HTML. Comment puis-je le désactiver pour que le rendu HTML soit correct?

134
sharvey

le moyen idéal est de

{{ something|safe }}

que de désactiver complètement l'échappement automatique.

280
iamgopal

Vous pouvez également déclarer HTML sécurisé à partir du code:

from flask import Markup
value = Markup('<strong>The HTML String</strong>')

Ensuite, transmettez cette valeur aux modèles et ils n’ont pas à le faire |safe.

94
Armin Ronacher

De la section jinja docs HTML échappant :

Lorsque l'échappement automatique est activé, tout est échappé par défaut, à l'exception des valeurs explicitement marquées comme étant sûres. Ceux-ci peuvent être marqués par l'application ou dans le modèle en utilisant le filtre | safe.

Exemple:

 <div class="info">
   {{data.email_content|safe}}
 </div>
17
daronwolff

Lorsque vous avez beaucoup de variables qui n'ont pas besoin d'être échappées, vous pouvez utiliser un bloc autoescape:

{% autoescape off %}
{{ something }}
{{ something_else }}
<b>{{ something_important }}</b>
{% endautoescape %}
1
NieDzejkob