eri*_*ora 6 python error-handling flask
我正在尝试在 Flask 中创建一个自定义错误页面,并且我想让错误处理程序访问生成导致错误的 API 调用的请求,以便它返回的错误页面可以根据情况进行更改。例如,假设有两个端点:
(1)@app.route('/get_item')
(2)@app.route('/submit_item')
如果在调用 期间发生错误get_item,我想显示某个错误页面(“抱歉,发生错误...”)但是,如果在调用 期间发生错误submit_item,我希望它显示更多信息,例如:
“发生错误!请联系我们。
您的用户名:
request.json['userid']您的提交ID:
request.json['submission']“
是否可以允许错误处理程序访问此内容,或者我只需包装整个submit_itemin try/except语句?
您可以request在错误处理函数中使用上下文,大致如下:
from flask import request
def exception_handler(*args):
if request.url.endswith('submit_item'):
return "MyMoreDescriptiveErrorMessage", 500
else:
return "Something wrong happened", 500
Run Code Online (Sandbox Code Playgroud)
我可能会创建一个自定义异常并为其指定一个错误处理程序,类似于此示例。
class CustomException(Exception):
def __init__(self, message=None, status_code=None, payload=None):
Exception.__init__(self)
if message is None:
message = "Sorry, an error occurred..."
self.message = message
if status_code is not None:
self.status_code = status_code
self.payload = payload
@app.errorhandler(CustomException)
def handle_custom(error):
response = render_template('error.html', message=error.message)
response.status_code = error.status_code
return response
@app.route('/submit_item')
def submit_item():
message = "An error occured! Userid: %(userid)d, submission: %(submission_id)d"
message = message % (request.json)
raise CustomException(message)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3500 次 |
| 最近记录: |