В 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.