Plone 使用原型从RichText字段获取文本的标准方法是什么

Plone 使用原型从RichText字段获取文本的标准方法是什么,plone,archetypes,Plone,Archetypes,对于灵巧性内容类型,规范的方法是使用transformer: 从plone.app.textfield.interfaces导入ITransformer 从plone.app.textfield.value导入IRichTextValue def get_text_字段(obj): “”“在灵巧度上获取对象中的文本字段。”“” 变压器=ITransformer(obj) 文本=“” 如果IRichTextValue.providedBy(obj.text):#灵活性 text=transform

对于
灵巧性
内容类型,规范的方法是使用transformer:

从plone.app.textfield.interfaces导入ITransformer
从plone.app.textfield.value导入IRichTextValue
def get_text_字段(obj):
“”“在灵巧度上获取对象中的文本字段。”“”
变压器=ITransformer(obj)
文本=“”
如果IRichTextValue.providedBy(obj.text):#灵活性
text=transformer(obj.text,“text/plain”)
返回文本
但是我找不到规范的方法来处理
原型
,转换器没有处理
raw
html,只处理
RichTextValue
对象

我现在的方法是使用
lxml.html
将html转换为文本,但我不知道它是否能正常工作:

def get_text_字段(obj):
“”“在对象中同时获取原型和灵活性的文本字段。”“”
文本=“”
尝试:
raw=obj.getText()#原型
如果原始!='':
从lxml导入html
el=html.fromstring(原始)
text=el.text\u content()
除属性错误外:
从plone.app.textfield.value导入IRichTextValue
如果IRichTextValue.providedBy(obj.text):#灵活性
从plone.app.textfield.interfaces导入ITransformer
变压器=ITransformer(obj)
text=transformer(obj.text,“text/plain”)
返回文本

在原型中,常规getter会为您执行此操作

因此,如果对某个具有文本字段的AT类型调用
getText
,则会得到转换后的值:Check

它使用字段中指定的mimetype

如果输出类型为
text/html
,并且您想要
text/plain

可以通过使用mimetype参数调用字段getter来获取:

obj.getField('text').get(obj, mimetype='text/plain')
进一步:
obj.getRawText
返回实际内容,如带有RichTextValue的DX内容上的
obj.text.raw


您可以检查内容是否提供了
IBaseObject
,而不是catch
AttributeError

谢谢你的回答,马蒂亚斯