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
,而不是catchAttributeError
谢谢你的回答,马蒂亚斯