gpt4 book ai didi

django - 表单验证错误和错误代码

转载 作者:行者123 更新时间:2023-12-02 13:05:36 24 4
gpt4 key购买 nike

在 Django 文档中 https://docs.djangoproject.com/en/dev/ref/forms/validation/#raising-validationerror说在引发 ValidationError 异常时提供错误代码是一种很好的做法。

# Good
ValidationError(_('Invalid value'), code='invalid')

# Bad
ValidationError(_('Invalid value'))

我的应用程序中有 API,并且我正在使用表单来验证输入数据。
如果表单无效,我想获取这些错误代码(而不是错误消息)。

所以我查看了BaseForm的_clean_fields方法的源代码:
https://github.com/django/django/blob/master/django/forms/forms.py#L278

except ValidationError as e:
self._errors[name] = self.error_class(e.messages)
if name in self.cleaned_data:
del self.cleaned_data[name]

据我了解,这个参数(self.code)没有传递到任何地方,并且在表单验证后无法获取。

有人可以解释一下使用此错误代码的目的吗?

最佳答案

在 Django 1.7 中,您现在可以从表单访问原始错误数据。您可以在 ErrorListErrorDict 上调用 as_data() 方法。例如:my_form.errors.as_data()。这基本上为您提供了原始的 ValidationError 对象而不是消息本身。从中您可以访问 .code 属性,例如:my_form.errors["__all__"].as_data()[0].code

您还可以序列化表单错误,这对 API 来说非常有用:

>>> print(form.errors.as_json())
{"__all__": [
{"message": "Your account has not been activated.", "code": "inactive"}
]}

关于django - 表单验证错误和错误代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18781492/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com