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')`
如何根据抛出错误或传递消息的位置生成数据=正确的消息?
答案 0 :(得分:3)
访问您要引发的异常实例:
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
子类。
您可以InvalidUsernameError
和InvalidDateError
并单独捕捉它们。 这肯定会产生一个更强大的解决方案(你不依赖于传递给引发异常的确切文本),即使对类层次结构过于深入也不是一件好事。 / p>