我在没有模板的情况下使用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,但不知道该怎么办......
由于
答案 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)