Django массив ошибок - PullRequest
2 голосов
/ 07 мая 2009

Я использую

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 Ответ

2 голосов
/ 07 мая 2009

У вас есть несколько вариантов в зависимости от того, какой вывод вы хотите.

Вариант первый, используйте конструктор Unicode для преобразования данных:

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

(прокси-объект Django реализует метод, который отвечает на Unicode.)

Вариант второй, получить список ошибок в виде текста. Это приводит к появлению разделенного на новую строку списка текста ошибки, каждая строка которого начинается со звездочки:

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

Вариант третий, использовать функцию force_unicode в django. Это похоже на unicode, но имеет некоторые дополнительные функции безопасности:

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