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?
le moyen idéal est de
{{ something|safe }}
que de désactiver complètement l'échappement automatique.
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
.
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>
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 %}