Wagtail встраивание изображений в HTML
Мы используем StreamField, чтобы позволить редакторам добавлять HTML для пользовательских макетов. Раньше мы могли включать изображения, просматривая ID изображения и код вставки:
<embed alt="My Image" embedtype="image" format="responsive" id="3896"/>
После обновления Wagtail они не отображаются. Мне интересно, была ли это непредусмотренная функция, которая была удалена, или что-то в этом коде изменилось.
Я придумал решение этой проблемы, используя пользовательский фильтр шаблонов:
from django.utils.safestring import mark_safe
from wagtail.core.rich_text import expand_db_html
@register.filter
def betterhtml(html):
return mark_safe(expand_db_html(html))
Это использует превосходную функцию Wagtail expand_db_html
, которая обрабатывает встроенные коды, добавляемые как часть редактора богатого текста.
В моих шаблонах, когда у меня есть StreamField с RawHTMLBlock, я могу использовать:
{% with blocks=self.content %}
{% for block in blocks %}
...
{% elif block.block_type == 'htmltext'%}
{{ block.value|betterhtml}}
{% endfor %}