Python 在Django中,如何获得异常';什么消息?
在视图函数中,我有如下内容:Python 在Django中,如何获得异常';什么消息?,python,django,exception-handling,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\u message':err.value}),
try:
url = request.POST.get('u', '')
if len(url) == 0:
raise ValidationError('Empty URL')
except ValidationError, err:
print err
输出是一个字符串:[u'Empty URL']
当我尝试将错误消息传递给我的模板时(填充在dict中,类似于{'error\u message':err.value}
),模板成功地获取了消息(使用{{{error\u message}
)
问题是我得到了与上面完全相同的字符串,[u'Empty URL']
,带有[u'…']
我怎样才能摆脱它
(Python2.6.5,Django 1.2.4,Xubuntu 10.04)我通过将
ValidationError
更改为BaseExceptionValidationError
来修复它
print err
的输出是[u'Empty URL']
,因为这是由repr(err.messages)
返回的字符串(请参见ValidationError.\uuu str\uuuu
源代码)
如果要从ValidationError
中打印一条可读消息,可以将错误消息列表串联起来,例如:
# Python 2
print '; '.join(err.messages)
我认为那实际上是一种糟糕的做法。BaseException捕获所有内容,而您应该只处理ValidationError。如果出现另一个异常,那是因为您的代码中有一个错误,应该予以修复。嗯,我自己也提出了这个错误/异常。try
块中的代码非常少,我认为出现不同类型错误的可能性很小。我只是想重用ValidationError
以实现语义目的。我想更合适的方法应该是使用我自己的验证错误子类BaseException
?无论如何,自从我第一次发布这篇文章以来,代码已经发生了很大的变化,我的解决方法不再适用,所以我接受了上面的答案。我认为,作为字段的验证器也是一个数组。很高兴了解验证错误
的消息
成员。他们从来没有在这里提到它:因为他们主要应该这样做!
# Python 3
print('; '.join(err.messages))