Předávání HTML šablony pomocí Flask / Jinja2

hlasů
89

Stavím admina pro láhev a SQLAlchemy, a já chci předat HTML pro různé vstupy do mého názoru použitím render_template. Rámec šablon Zdá se automaticky uniknout html, takže vše < > jsou převedeny na HTML entity. Jak mohu zakázat to tak, že HTML správně vykreslí?

Položena 08/07/2010 v 18:34
zdroj uživatelem
V jiných jazycích...                            


4 odpovědí

hlasů
191

ideální způsob, jak je

{{ something|safe }}

než jeho úplným vypnutím automatického unikat.

Odpovězeno 08/07/2010 v 18:48
zdroj uživatelem

hlasů
72

Můžete také prohlásit, že HTML bezpečí před kód:

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

Pak předat tuto hodnotu šablon a nemají na |safeněj.

Odpovězeno 16/07/2010 v 17:00
zdroj uživatelem

hlasů
8

V části Jinja docs HTML Escaping :

Když automatické escaping je povoleno vše unikl ve výchozím nastavení, s výjimkou hodnoty výslovně označeny jako bezpečné. Ty mohou být buď označeny aplikací nebo v šabloně pomocí | Bezpečnostní filtr.

Příklad:

 <div class="info">
   {{data.email_content|safe}}
 </div>
Odpovězeno 12/02/2015 v 23:06
zdroj uživatelem

hlasů
0

Když máte mnoho proměnných, které nepotřebují útěku, můžete použít autoescapeblok:

{% autoescape off %}
{{ something }}
{{ something_else }}
<b>{{ something_important }}</b>
{% endautoescape %}
Odpovězeno 28/06/2019 v 16:16
zdroj uživatelem

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