Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django中,如何获得异常';什么消息?_Python_Django_Exception Handling - Fatal编程技术网

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
更改为
BaseException

ValidationError
来修复它

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))