当我更改文字时,例如在包含setText()
的文档中,文档的内容类型更改为text/plain
。
In [1]: app.Plone.invokeFactory('Document', 'doc')
Out[1]: 'doc'
In [2]: app.Plone.doc.getContentType()
Out[2]: 'text/html'
In [3]: app.Plone.doc.setText('xyz'); app.Plone.doc.getContentType()
Out[3]: 'text/plain'
In [4]: app.Plone.doc.setText('<abc>xyz</abc>'); app.Plone.doc.getContentType()
Out[4]: 'text/html'
即使我创建了一个文档并将mimetype
明确设置为text/plain
,它也会将类型更改为text/html
。
In [1]: app.Plone.invokeFactory('Document', 'doc',
text='<abc>xyz</abc>',
mimetype='text/plain')
Out[1]: 'doc'
In [2]: app.Plone.doc.getContentType()
Out[2]: 'text/html'
文本由_process_input()
类的TextField(FileField)
处理,并猜测类型并对其进行更改。
API是否希望程序员知道_process_input()
的所有猜测?如果是的话,这是在某处记录的吗?
答案 0 :(得分:2)
我猜您的doument是ATContentTypes文档。
在这种情况下,除非在setText中给出了特定的mimetype,否则将使用默认的mimetype:
doc.setText(u"<p>your text</p>", mimetype='text/html')
对于上传的文档,mimetype被猜到了 https://github.com/plone/Products.ATContentTypes/blob/2.2.0/Products/ATContentTypes/content/document.py#L137