Python XML解析错误:文档元素后的垃圾:自定义验证器(Wagtail)第1行第11列
如果在wagtail CMS的RichTextField中键入了“\n”字符,则验证程序的Python XML解析错误:文档元素后的垃圾:自定义验证器(Wagtail)第1行第11列,python,html,django,xml,wagtail,Python,Html,Django,Xml,Wagtail,如果在wagtail CMS的RichTextField中键入了“\n”字符,则验证程序的\uuuu call\uuu方法中会发生XML ParseError错误 这里发生了一个错误 plain\u text=''.join(fromstring(value).itertext()) 回溯 富文本字段的值不能保证是完整有效的XML文档,因为它可以包含多个顶级元素,这在XML中是不允许的。如果希望通过强制执行此操作的XML解析器运行该值,则需要首先将其包装在外部元素中,例如… from xml.
\uuuu call\uuu
方法中会发生XML ParseError错误
这里发生了一个错误
plain\u text=''.join(fromstring(value).itertext())
回溯
富文本字段的值不能保证是完整有效的XML文档,因为它可以包含多个顶级元素,这在XML中是不允许的。如果希望通过强制执行此操作的XML解析器运行该值,则需要首先将其包装在外部元素中,例如
…
from xml.etree.ElementTree import fromstring
from django.core.exceptions import ValidationError
from django.utils.deconstruct import deconstructible
@deconstructible
class ProhibitBlankRichTextValidator:
"""
Validate that the incoming html-string contains plain text characters.
Common usage: Proper RichTextField validation
Reason:
Handling improper RichTextField validation by Wagtail 2.1:
https://github.com/wagtail/wagtail/issues/4549
"""
message = "This field is required."
def __init__(self, message=None):
if message is not None:
self.message = message
def __call__(self, value):
plain_text = ''.join(fromstring(value).itertext()) # Escape html tags
if not plain_text:
raise ValidationError(self.message)