Текст исчез, когда я хочу, чтобы он отображался как HTML в Flask / jinja2

23
задан arinte 6 April 2011 в 19:55
поделиться

2 ответа

Вы должны использовать data=Markup(feedItem.html) вместо data=Markup(feedItem.html).unescape(). Это поможет сделать ваш шаблон чистым.

Вызывать unescape () здесь бессмысленно (если только feeditem.html не содержит предварительно экранированный html, чего, вероятно, нет). Что еще более важно, это мешает способности Jinja2 распознавать это поле как html, которое необходимо экранировать, создавая объект строки / юникода вместо объекта разметки. Вы фактически отказываетесь от способности Jinja2 обрабатывать экранирование автоматически (это и есть цель класса Markup!) И вместо этого заставляете своих будущих разработчиков шаблонов помнить, что это поле требует экранирования вручную, и загромождать код шаблона дополнительным вызовом, чтобы сделать это. .

12
ответ дан ʇsәɹoɈ 6 April 2011 в 19:55
поделиться

Это тоже должно сработать.

{% extends "layout.html" %}
{% block body %}
{{ data|safe }}
{% endblock %}
98
ответ дан Philip Southam 6 April 2011 в 19:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: