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 %}
Вернуться на верх