Вы должны использовать data=Markup(feedItem.html)
вместо data=Markup(feedItem.html).unescape()
. Это поможет сделать ваш шаблон чистым.
Вызывать unescape () здесь бессмысленно (если только feeditem.html не содержит предварительно экранированный html, чего, вероятно, нет). Что еще более важно, это мешает способности Jinja2 распознавать это поле как html, которое необходимо экранировать, создавая объект строки / юникода вместо объекта разметки. Вы фактически отказываетесь от способности Jinja2 обрабатывать экранирование автоматически (это и есть цель класса Markup!) И вместо этого заставляете своих будущих разработчиков шаблонов помнить, что это поле требует экранирования вручную, и загромождать код шаблона дополнительным вызовом, чтобы сделать это. .
Это тоже должно сработать.
{% extends "layout.html" %}
{% block body %}
{{ data|safe }}
{% endblock %}