Gre*_*eem 16 django django-forms
在Django文档中,https://docs.djangoproject.com/en/dev/ref/forms/validation/#raising-validationerror表示在提出ValidationError异常时提示错误代码是一种好习惯.
# Good
ValidationError(_('Invalid value'), code='invalid')
# Bad
ValidationError(_('Invalid value'))
Run Code Online (Sandbox Code Playgroud)
我的应用程序中有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]
Run Code Online (Sandbox Code Playgroud)
据我所知,这个参数(self.code)没有传递到任何地方,并且在表单验证后无法获得.
有人可以解释使用此错误代码的目的是什么?
Ben*_*vis 17
在Django 1.7中,您现在可以从表单中访问原始错误数据.你可以as_data()在ErrorList或上调用方法ErrorDict.例如: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"}
]}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8747 次 |
| 最近记录: |