wagtail 如何 JSON 序列化 ListBlock 中的富文本字段
wagtail how to JSON serialize RichText field in ListBlock
错误:RichText 类型的对象JSON 不可序列化。
我的代码:
class AvvisiBlock(blocks.StructBlock):
avvisi = blocks.ListBlock(
blocks.StructBlock(
[
("title", blocks.CharBlock(classname="full title", icon="title", required=True)),
("text", blocks.RichTextBlock(icon="pilcrow", required=True)),
]
)
)
def get_api_representation(self, value, context=None):
dict_list = []
for item in value["avvisi"]:
print(item)
temp_dict = {
'title': item.get("title"),
'text': item.get("text"),
}
dict_list.append(temp_dict)
return dict_list
项目价值:
StructValue([('title', 'avvisi importanti 1'), ('text', <wagtail.core.rich_text.RichText object at 0x000001F73FCDE988>)])
如何序列化对象?
如 Wagtail 的 rich text internals 文档中所述,富文本有两种可能的表示形式 - 'symbolic' 源表示形式,它通过 ID 跟踪页面链接和其他项目(例如图像),以及呈现的 HTML 版本(如您所料,通过 URL 引用它们)。
如果您想要 API 到 return 呈现的 HTML,请使用:
temp_dict = {
'title': item.get("title"),
'text': str(item.get("text")),
}
或者如果你想要它 return 符号源:
temp_dict = {
'title': item.get("title"),
'text': item.get("text").source,
}
错误:RichText 类型的对象JSON 不可序列化。
我的代码:
class AvvisiBlock(blocks.StructBlock):
avvisi = blocks.ListBlock(
blocks.StructBlock(
[
("title", blocks.CharBlock(classname="full title", icon="title", required=True)),
("text", blocks.RichTextBlock(icon="pilcrow", required=True)),
]
)
)
def get_api_representation(self, value, context=None):
dict_list = []
for item in value["avvisi"]:
print(item)
temp_dict = {
'title': item.get("title"),
'text': item.get("text"),
}
dict_list.append(temp_dict)
return dict_list
项目价值:
StructValue([('title', 'avvisi importanti 1'), ('text', <wagtail.core.rich_text.RichText object at 0x000001F73FCDE988>)])
如何序列化对象?
如 Wagtail 的 rich text internals 文档中所述,富文本有两种可能的表示形式 - 'symbolic' 源表示形式,它通过 ID 跟踪页面链接和其他项目(例如图像),以及呈现的 HTML 版本(如您所料,通过 URL 引用它们)。
如果您想要 API 到 return 呈现的 HTML,请使用:
temp_dict = {
'title': item.get("title"),
'text': str(item.get("text")),
}
或者如果你想要它 return 符号源:
temp_dict = {
'title': item.get("title"),
'text': item.get("text").source,
}