使用 HTML 嵌入图像的鹡鸰

Wagtail embedding images with HTML

我们使用 StreamField 允许编辑器添加 HTML 自定义布局。我们过去可以通过查找图像的 ID 和嵌入代码来包含图像:

<embed alt="My Image" embedtype="image" format="responsive" id="3896"/>

自从对 Wagtail 执行更新后,这些都不会呈现。我想知道这是否是一个已被删除的意外功能,或者此代码是否已更改。

我想出了一个解决方案,使用 custom template filter:

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 功能,该功能处理作为富文本编辑器的一部分添加的嵌入代码。

在我的模板中,当我有带有 RawHTMLBlock 的 StreamField 时,我可以使用:

{% with blocks=self.content %}
  {% for block in blocks %}
    ...
    {% elif block.block_type == 'htmltext'%}
      {{ block.value|betterhtml}}
  {% endfor %}