If you look at flask/__init__.py
you will see that abort
is actually imported from werkzeug.exceptions
. Looking at the Aborter
class, we can see that when called with a numeric code, the particular HTTPException
subclass is looked up and called with all of the arguments provided to the Aborter
instance. Looking at HTTPException
, paying particular attention to lines 85-89 we can see that the second argument passed to HTTPException.__init__
is stored in the description
property, as @dirn pointed out.
You can either access the message from the description
property:
@app.errorhandler(400)
def custom400(error):
response = jsonify({'message': error.description['message']})
# etc.
abort(400, {'message': 'custom error message to appear in body'})
or just pass the description in by itself:
@app.errorhandler(400)
def custom400(error):
response = jsonify({'message': error.description})
# etc.
abort(400, 'custom error message to appear in body')
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…