gpt4 book ai didi

python - Try Except 阻止多个验证错误

转载 作者:太空宇宙 更新时间:2023-11-04 00:48:48 25 4
gpt4 key购买 nike

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 = 正确的消息?

最佳答案

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

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' 您必须查看通过了哪条消息:

except ValidationError as e:
msg = 'Enter a valid '
if str(e).endswith('date'):
msg += 'date'
else:
msg += 'username'
data = json.dumps({'status': msg})
return HttpResponseBadRequest(data, content_type='application/json')

或者更简单:

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 的两个不同子类。您可以有 InvalidUsernameErrorInvalidDateError 并分别捕获它们。 这肯定会产生一个更强大的解决方案(您不依赖于传递给引发的异常的确切文本),即使类层次结构太深通常不是一件好事。

关于python - Try Except 阻止多个验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38081911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com