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

问题描述 投票:12回答:2

在视图函数中,我有类似的东西:

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)

python django exception-handling
2个回答
15
投票

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

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

如果要从ValidationError中打印单个可读消息,则可以合并错误消息列表,例如:

    # Python 2 
    print '; '.join(err.messages)
    # Python 3
    print('; '.join(err.messages))

-4
投票

通过将ValidationError更改为BaseException来解决。

© www.soinside.com 2019 - 2024. All rights reserved.