Wagtail - 在富文本编辑器中更改图像标签/格式

时间:2016-07-27 09:02:59

标签: django wagtail hallo-js

我在没有模板的情况下使用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)。 e.g:

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

有可能吗? 我调查了hallo.js,但不知道该怎么办......

由于

2 个答案:

答案 0 :(得分:2)

向模型中添加一个方法,该方法返回在富文本字段上调用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'),
    ]

答案 1 :(得分:1)

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

from wagtail.wagtailcore.templatetags import wagtailcore_tags

rich_text = wagtailcore_tags.richtext(rich_text_source)

rich_text应该嵌入带有完整网址的图片。

如果你在序列化程序中使用它,那么使用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)