对多个验证错误尝试Except块

2024-10-02 08:22:51 发布

您现在位置:Python中文网/ 问答频道 /正文

try: 
    if isDateValid(date) == false:
        raise ValidationError('invalid date')
    if usernameValid(user) == false:
        raise ValidationError('invalid username')
except ValidationError:
    data = json.dumps({'status': 'Enter a valid date'})
    data = json.dumps({'status': 'Enter a valid username'})
    return HttpResponseBadRequest(data, content_type='application/json')`

我如何使data=正确的消息取决于错误被抛出或消息传递的位置?在


Tags: jsonfalsedatadateifstatususernameraise
1条回答
网友
1楼 · 发布于 2024-10-02 08:22:51

访问正在引发的异常实例:

try: 
    if isDateValid(date) == false:
        raise ValidationError('invalid date')
    if usernameValid(user) == false:
        raise ValidationError('invalid username')
except ValidationError as e:
    data = json.dumps({'status': str(e)})
    return HttpResponseBadRequest(data, content_type='application/json')

好吧,上面的内容将产生'status': 'invalid date'。如果您想发送消息'enter a valid date',则必须查看传递的消息:

^{pr2}$

或者更简单:

except ValidationError as e:
    msg = 'Enter a valid ' + str(e)[len('invalid '):]
    data = json.dumps({'status': msg})
    return HttpResponseBadRequest(data, content_type='application/json')

就个人而言,你应该扪心自问,对于两种不同的情况,是否可以使用ValidationError的两个不同的子类。 你可以让InvalidUsernameError和{}分别捕捉它们。这肯定会产生一个更健壮的解决方案(您不依赖传递给引发的异常的确切文本),尽管对类层次结构进行太深入通常不是一件好事。在

相关问题 更多 >

    热门问题