В Django, как я могу получить сообщение об исключении?
В функции просмотра у меня есть что-то вроде:
try:
url = request.POST.get('u', '')
if len(url) == 0:
raise ValidationError('Empty URL')
except ValidationError, err:
print err
Вывод представляет собой строку: [u'Empty URL']
Когда я пытаюсь передать сообщение об ошибке в мой шаблон (заполненный в dict, что-то вроде { 'error_message': err.value }
), шаблон успешно получает сообщение (используя {{ error_message }}
).
Проблема в том, что я получаю ту же строку, что и выше, [u'Empty URL']
, с [u'...']
!
Как мне избавиться от этого?
(Python 2.6.5, Django 1.2.4, Xubuntu 10.04)
Ответы
Ответ 1
ValidationError
действительно содержит несколько сообщений об ошибках.
Вывод print err
равен [u'Empty URL']
, потому что это строка, возвращаемая repr(err.messages)
(см. исходный код ValidationError.__str__
).
Если вы хотите напечатать одно читаемое сообщение из ValidationError
, вы можете объединить список сообщений об ошибках, например:
print '; '.join(err.messages)
Ответ 2
Я исправил его, изменив ValidationError
на BaseException
.