2010-07-08 18 views
86

Flask ve SQLAlchemy için bir yönetici yapıyorum ve farklı girişler için HTML'yi render_template kullanarak görünümüme iletmek istiyorum. çiftleşmiş çerçeve nedenle tüm < "'> html varlıklar dönüştürülür. Nasıl bu kadar HTML doğru bir şekilde gösterildiğinden devre dışı bırakabilir, otomatik html kaçmak görünüyor?Flask/Jinja2'yi kullanarak HTML'yi şablona geçirme

cevap

177

ideal yolu

{{ something|safe }} 

etmektir

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

Sonra bu valu pass:

+0

hi @Armin Ronacher, daha açıklamak ve bir örnek vermek misiniz? Teşekkürler. – Samoth

+0

Örneğin, “userHome.html” adlı bir dosyam var ve ben return render_template ('userHome.html') 'ifadesini kullanmak istiyorum, ancak doğru şekilde oluşturmuyor ve hepsi de html varlıklarına dönüşüyor ** krom konsolumda. – Samoth

+0

'trans' etiketinde bu, {% trans something = bir şey | safe%} A {{something}} B {% endtrans%}' – Kangur

70

Ayrıca kodundan HTML güvenli ilan edebilir tamamen otomatik önceleniminin kapatarak daha. Şablonlara e ve |safe'a sahip değiller. jinja dokümanlar bölümünden HTML Escaping itibaren

+0

jinja2'de işaretleme var mı? – iamgopal

+3

İşaretleme bir Jinja2 sınıfı, evet. Birçok python kütüphanesi tarafından desteklenen ortak bir arayüz uygular (maalesef Django değil). Aynı nesneyi uygulayan biçimlendirme güvenli paketini de kullanabilirsiniz: http://pypi.python.org/pypi/MarkupSafe –

+0

Bu, filtrenin şablona bazı işaretlemeleri iletmesi gerektiğinde, özel filtreler yazmak için en iyisidir. – erjiang

7

:

otomatik kaçış herşeyi etkindir

açıkça güvenli olarak işaretlenmiş değerler dışında varsayılan kaçtı edilir. Bunlar, uygulama tarafından işaretlenen veya şablonda | safe filtresi kullanılarak olabilir.

Örnek:

<div class="info"> 
    {{data.email_content|safe}} 
</div> 
+1

http://jinja.pocoo.org/docs/dev/templates/#html-escaping – Akairis

İlgili konular