Python XML解析错误:文档元素后的垃圾:自定义验证器(Wagtail)第1行第11列

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.

如果在wagtail CMS的RichTextField中键入了“\n”字符,则验证程序的
\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)