В Django, как я могу получить сообщение об исключении?

в функции просмотра у меня есть что-то вроде:

try:
    url = request.POST.get('u', '')
    if len(url) == 0:
        raise ValidationError('Empty URL')
except ValidationError, err:
    print err

вывод представляет собой строку:[u'Empty URL']

когда я пытаюсь передать сообщение об ошибке в мой шаблон (набитый дикт, что-то вроде { 'error_message': err.value }), Шаблон успешно получает сообщение (используя {{ error_message }}).

проблема в том, что я получаю ту же строку, что и выше,[u'Empty URL'] С [u'...']!

как мне избавиться от этого?

(Python 2.6.5, Django 1.2.4, Xubuntu 10.04)

2 ответов


ValidationError на самом деле содержит несколько сообщений об ошибках.

выход print err и [u'Empty URL'] потому что это строка, возвращаемая repr(err.messages) (см. ValidationError.__str__ исходный код).

если вы хотите распечатать одно читаемое сообщение из ValidationError, вы можете объединить список сообщений об ошибках, например:

print '; '.join(err.messages)

я исправил это, изменив ValidationError до BaseException.