Python 棉花糖电子邮件自定义验证消息

Python 棉花糖电子邮件自定义验证消息,python,flask-marshmallow,Python,Flask Marshmallow,我使用以下模式验证数据: class UserSchema(db_schema.Schema): email = data_fields.Email(required = True, error_messages={ 'required': 'Email is mandatory field.', 'type': 'The manager email is not valid.' }) 但是ValidationError.me

我使用以下模式验证数据:

class UserSchema(db_schema.Schema):
    email = data_fields.Email(required = True, 
    error_messages={
          'required': 'Email is mandatory field.', 
          'type': 'The manager email is not valid.'
    })
但是ValidationError.messages.items具有以下消息:

 "Not a valid email address."

如何让它显示我的自定义消息?是否有错误消息字典可能值的全面列表,因为我怀疑我也需要覆盖其他消息。

我发现错误消息字典错误,密钥应为“无效”:

看看

Field类定义了“required”、“null”和“validator\u failed”

特定字段实现继承这些消息,并可能扩展列表。e、 g.电子邮件定义了附加错误消息“无效”

注意:看起来电子邮件和其他字段会覆盖默认的错误消息(而不是扩展它们),但实际上错误消息是“收集”的,包括父类

class Field(FieldABC):
    ...
    # Collect default error message from self and parent classes
    messages = {}  # type: typing.Dict[str, str]
    for cls in reversed(self.__class__.__mro__):
        messages.update(getattr(cls, "default_error_messages", {}))
    messages.update(error_messages or {})
    self.error_messages = messages
    ...
您的操作是正确的,但要使用的密钥是“validator_failed”。验证失败时,这将覆盖默认错误消息

class Field(FieldABC):
     ...
     default_error_messages = {
            "required": "Missing data for required field.",
            "null": "Field may not be null.",
            "validator_failed": "Invalid value.",
        }
     ...
class Email(String):
    ...
    default_error_messages = {"invalid": "Not a valid email address."}
    ...
class Field(FieldABC):
    ...
    # Collect default error message from self and parent classes
    messages = {}  # type: typing.Dict[str, str]
    for cls in reversed(self.__class__.__mro__):
        messages.update(getattr(cls, "default_error_messages", {}))
    messages.update(error_messages or {})
    self.error_messages = messages
    ...
error_messages = {
    'required': 'Missing data for required field.',
    'null': 'Field may not be null.',
    'validator_failed': 'Invalid value.',
}