2010-07-08 19 views
86

Buduję administratora dla Flask i SQLAlchemy, i chcę przekazać kod HTML dla różnych danych wejściowych do mojego widoku przy użyciu render_template. Ramy szablonów wydaje się automatycznie uciec html, więc wszystko < „'> są konwertowane do podmiotów html. W jaki sposób można wyłączyć, że tak, że kod HTML renderuje poprawnie?Przekazywanie kodu HTML do szablonu za pomocą Flask/Jinja2

Odpowiedz

177

idealnym sposobem jest

{{ something|safe }} 

. niż całkowite wyłączenie automatycznego cytowanie

+0

hi @Armin Ronacher, to proszę wyjaśnić więcej i dać przykład? dzięki. – Samoth

+0

Mam na przykład na przykład plik o nazwie 'userHome.html' i chciałbym użyć' return render_template ('userHome.html') ', ale nie renderuje się poprawnie, a wszystkie zwracają się do ** html ** w mojej chromowanej konsoli. – Samoth

+0

W tagu 'trans' musi to być użyte jako' {% trans something = something | safe%} A {{something}} B {% endtrans%} ' – Kangur

70

można również zadeklarować, że HTML bezpieczne z kodem:

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

następnie przekazać tę VALU e do szablonów i nie muszą one do |safe go.

+0

czy znaczniki istnieją w jinja2? – iamgopal

+3

Markup jest klasą Jinja2, tak. Implementuje wspólny interfejs obsługiwany przez wiele bibliotek Pythona (niestety nie Django). Można również użyć pakietu bezpiecznego znaczników, który implementuje ten sam obiekt: http://pypi.python.org/pypi/MarkupSafe –

+0

Jest to najlepsze rozwiązanie do pisania niestandardowych filtrów, gdy filtr musi przekazać kilka znaczników do szablonu. – erjiang

7

W sekcji docs Jinja HTML Escaping:

Gdy włączone jest automatyczne Cytowanie wszystko jest domyślnie uciekł z wyjątkiem wartości wyraźnie oznaczone jako bezpieczne. Mogą one być oznaczone jako oznaczone przez aplikację lub w szablonie za pomocą | bezpiecznego filtru .

Przykład:

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

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

Powiązane problemy