在Django中,我如何获得异常消息?

时间:2011-01-13 09:42:11

标签: python django exception-handling

在视图功能中,我有类似的东西:

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)

2 个答案:

答案 0 :(得分:13)

ValidationError实际上包含多条错误消息。

print err的输出为[u'Empty URL'],因为这是repr(err.messages)返回的字符串(请参阅ValidationError.__str__源代码)。

如果要从ValidationError打印单个可读消息,可以连接错误消息列表,例如:

print '; '.join(err.messages)

答案 1 :(得分:-3)

我通过将ValidationError更改为BaseException来修复此问题。