Django массив ошибок
-
08-07-2019 - |
Вопрос
Я использую
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`)
Решение
У вас есть несколько вариантов в зависимости от того, какой вывод вы хотите.
Первый вариант, используйте конструктор 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]