gpt4 book ai didi

python - 如何更改 Wagtail 通过其 API 提供媒体服务的方式?

转载 作者:行者123 更新时间:2023-12-01 07:49:27 24 4
gpt4 key购买 nike

我目前正在尝试创建一个 Web 应用程序,该应用程序使用 Django + Wagtail 作为后端内容,并使用 React 作为前端。截至目前,在页面加载时,我通过 http GET 请求从 Wagtail 请求所有“文章”。然后,我在前端组件中显示这些数据。

这很有效,除了我遇到的一个问题,即文章正文中的媒体表示为 <embed />带有本地来源的标签。我想要的是 <img />标签的 src 指向存储图像的 url。我如何在后端更改它?我似乎找不到有关此问题的任何类型的文档。

这是我的获取请求响应当前的样子:

{
"id": 9,
...
"title": "Child page",
"date": null,
"body": "<p>Here is a test image:</p><embed alt=\"testimg\" embedtype=\"image\" format=\"fullwidth\" id=\"5\"/><p></p>",
"author": "Isaac"
}

这是我希望的样子:

{
"id": 9,
...
"title": "Child page",
"date": null,
"body": "<p>Here is a test image:</p><img src="image-location-url"/><p></p>",
"author": "Isaac"
}

我该怎么办?这可以通过 Wagtail 设置配置来控制吗?或者我应该以某种方式改变我的内容模型?谢谢。

最佳答案

直接从 Github 页面上的评论复制 ( https://github.com/wagtail/wagtail/issues/2695#issuecomment-373002412 ):

from wagtail.wagtailcore.rich_text import expand_db_html


class APIRichTextField(APIField):
def __init__(self, name):
serializer = serializers.APIRichTextSerializer()
super().__init__(name=name, serializer=serializer)


class APIRichTextSerializer(fields.CharField):
def to_representation(self, instance):
representation = super().to_representation(instance)
return expand_db_html(representation)

class MyModel(Page):
body = RichTextField()
api_fields = [
APIRichTextField('body'),
]

现在我的正文直接转换为将在 Wagtail 端显示的 html。感谢@solarissmoke 的指导。如果这个答案/问题不遵循准则,请告诉我,我很乐意删除它。

关于python - 如何更改 Wagtail 通过其 API 提供媒体服务的方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56299462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com