Django验证错误数组

时间:2009-05-07 18:05:00

标签: django django-forms django-validation

我正在使用

rf['email'].errors

如文档中所述,我可以使用它来处理错误数组。

[str(e) for e in rf['email'].errors]  #give me ["<django.utils.functional.__proxy__>"]

如果是repr或str - 它会给出ul或数组字符串。

所以只有当我一起使用repr和eval时它才有用。但我认为这是一个愚蠢的解决方案。

eval(`rf['email'].errors`)

1 个答案:

答案 0 :(得分:2)

根据您想要的输出,您有几个选项。

选项一,使用unicode构造函数转换数据:

list_of_error_texts = [unicode(e) for e in rf['email'].errors]

(Django的代理对象实现了一个响应unicode的方法。)

选项二,将ErrorList作为文本。这将生成一个以换行符分隔的错误文本列表,每行前面都有一个星号:

print rf['email'].errors.as_text()
* My error one
* My error two

选项三,使用django的force_unicode函数。这就像unicode,但有一些额外的安全功能:

from django.utils.encoding import force_unicode
list_of_error_texts = [force_unicode(e) for e in rf['email'].errors]