Buduję administratora dla Flask i SQLAlchemy i chcę przekazać HTML dla różnych danych wejściowych do mojego widoku za pomocą render_template
. Wygląda na to, że struktura szablonów automatycznie wymyka się z html, więc wszystkie <"'> są konwertowane na encje HTML. Jak mogę to wyłączyć, aby HTML renderował się poprawnie?
163
userHome.html
i chciałbym go użyćreturn render_template('userHome.html')
, ale nie renderuje się on poprawnie i wszystkie zwracają się do jednostek html w mojej konsoli chrome.trans
tagu musi to być używane jako{% trans something=something|safe %}A {{something}} B{% endtrans %}
Możesz również zadeklarować go jako bezpieczny HTML z kodu:
Następnie przekaż tę wartość do szablonów, a oni nie muszą tego robić
|safe
.źródło
Z sekcji jinja docs HTML Escaping :
Przykład:
źródło
Jeśli masz wiele zmiennych, które nie wymagają ucieczki, możesz użyć
autoescape
bloku:źródło
Niektórzy ludzie zdają się wyłączać autoescape , co niesie ze sobą zagrożenie bezpieczeństwa związane z manipulowaniem wyświetlaniem napisów.
Jeśli chcesz tylko wstawić kilka podziałów wierszy do ciągu i przekonwertować te podziały na
<br />
, możesz wziąć makro jinja, takie jak:aw szablonie po prostu nazwij to za pomocą
źródło