Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django ValidationError在For循环中格式化_Python_Django_Python 3.x_Error Handling - Fatal编程技术网

Python Django ValidationError在For循环中格式化

Python Django ValidationError在For循环中格式化,python,django,python-3.x,error-handling,Python,Django,Python 3.x,Error Handling,我已经编写了一系列对django模型输入调用的RegexValidator定义。以下是一个例子: def fein_validator(value): err = None for validator in FEIN_VALIDATOR: try: validator(value) return value except ValidationError as exc: err

我已经编写了一系列对django模型输入调用的RegexValidator定义。以下是一个例子:

def fein_validator(value):
    err = None
    for validator in FEIN_VALIDATOR:
        try:
            validator(value)
            return value
        except ValidationError as exc:
            err = exc
    raise err
此方法的
FEIN_验证器
如下所示,以供参考。请注意,在本例中只有一个项目,我有其他具有多个项目的验证器(因此循环的
):

该方法工作得很好,并在应该的时候抛出一个错误。但是,它抛出的错误是输入一个有效的值。
,我想定制更具体的返回

我试过和的版本。但这些都假设只有一个通行证。我正在尝试使用
for循环
运行一系列验证程序

问题1:我正在使用的方法构造对此有效吗?还是应该为每个验证使用单独的方法?[由此我可以添加自定义消息。]

问题2:如果这样做有效,如何将引发的错误消息更改为自定义消息?

编辑1:添加注释

是的,你的方法很好用

编辑2:添加自定义错误消息模型链接


这会抛出
TypeError:异常必须派生自BaseException
。我做了更多的搜索,但不明白为什么会抛出类型错误?抛出属性错误:“ValidationError”对象没有属性“error\u list”
。我发现这是有道理的,错误是从通过
CreateView
类实例填充的
模型中抛出的。我尝试过使用
非字段错误
(这是我期望的工作)和模型字段名(
“字段名”
),但它们都抛出相同的错误。我猜我对模型字段名的引用是错误的-字段名的引用具体是什么?在花了更多的时间回答上面的答案后,我意识到有一个括号格式错误(错误现在已在上面的答案中修复),它的工作原理与广告一样。谢谢
FEIN_VALIDATOR = [
    RegexValidator(r'^\d{2}-\d{7}$')
    ]
  def fein_validator(value):
        err = None
        for validator in FEIN_VALIDATOR:
            try:
                validator(value)
                return value
            except ValidationError:
                raise ValidationError({'field_name': ["error message",]})