1

我正在使用没有模板的 wagtail(我使用 rest-framework 构建了一个 API)。我想在富文本编辑器中更改图像的格式

例如,这是我现在的 RichText 字段:

<p>test test test</p>
<p><br/></p><p><embed alt=\"IMG_1232.jpg\" embedtype=\"image\" format=\"test\" id=\"4\"/><br/></p>"

相反,我希望它只包含到图像的直接链接,甚至更好地包含我定义的过滤器(使用 register_image_format)的图像。例如:

<p>test test test</p>
<p><br/></p><p><embed href="/media/IMG_1232.width-400"/><br/></p>"

可能吗?我查看了 hallo.js 但不知道如何处理它......

谢谢

4

2 回答 2

4

向您的模型添加一个方法,该方法返回在richtext富文本字段上调用过滤器的结果。然后,您可以使用此方法代替api_fields定义中的字段本身:

from wagtail.core.templatetags import wagtailcore_tags

def MyPage(Page):
    body = RichTextField()

    def rendered_body(self):
        return wagtailcore_tags.richtext(self.body)

    api_fields = [
        APIField('rendered_body'),
    ]
于 2018-05-22T11:55:32.740 回答
1

要获取图像、嵌入和文档的完整 URL,您必须通过富文本filter模板标签运行富文本块的内容。

from wagtail.wagtailcore.templatetags import wagtailcore_tags

rich_text = wagtailcore_tags.richtext(rich_text_source)

rich_text应该嵌入和带有完整 URL 的图像。

与 DRF 一起使用它看起来像这样,如果你在你的序列化器中这样做

from django.contrib.auth.models import User
from django.utils.timezone import now
from rest_framework import serializers
from wagtail.wagtailcore.templatetags import wagtailcore_tags

class SomeSerializer(serializers.Serializer):
    rich_text = serializers.SerializerMethodField()

    def get_rich_text(self, obj):
        return wagtailcore_tags.richtext(obj.rich_text.source)
于 2016-08-15T06:28:02.870 回答