Вопрос

Я использую

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]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top