Request的中断和ErrorHandler实例解析


Posted in Python onFebruary 12, 2018

概述

在view函数中,如果需要中断request,可以使用abort(500)或者直接raise exception。当然我们还需要返回一个出错信息给前端,所以需要定制一下ErrorHandler。一般只需要两个个handler即可,一个是404错误,一个是500一类的服务器端错误。当然也可以自定义错误。

代码清单

下面是一份示例代码,main是一个蓝本或者app,发生404错误或500错误,会返回一个Json对象给请求段。

from flask import jsonify
from . import main

@main.errorhandler(404)
def error_404(error):
  """这个handler可以catch住所有abort(404)以及找不到对应router的处理请求"""
  response = dict(status=0, message="404 Not Found")
  return jsonify(response), 404

@main.errorhandler(Exception)
def error_500(error):
  """这个handler可以catch住所有的abort(500)和raise exeception."""
  response = dict(status=0, message="500 Error")
  return jsonify(response), 400

class MyError(Exception):
  """自定义错误类"""
  pass

@main.errorhandler(MyError)
def MyErrorHandle(error):
  response = dict(status=0, message="400 Error")
  return jsonify(response), 400

蓝本的错误处理

在蓝本中编写错误处理程序有点不同,如果使用errorhandler修饰器,那么只有蓝本中的错误才会触发。如果想注册全局的错误处理程序,要用app_errorhandler。

例如:

from . import auth


@auth.app_errorhandler(404)
def error_404(error):
  response = dict(status=0, message="404 Not Found")
  return jsonify(response), 404

总结

以上就是本文关于Request的中断和ErrorHandler实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
python开发之thread线程基础实例入门
Nov 11 Python
12步入门Python中的decorator装饰器使用方法
Jun 20 Python
Python实现简易端口扫描器代码实例
Mar 15 Python
python编程实现归并排序
Apr 14 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
May 21 Python
Python实现矩阵相乘的三种方法小结
Jul 26 Python
在linux系统下安装python librtmp包的实现方法
Jul 22 Python
解决python多行注释引发缩进错误的问题
Aug 23 Python
Tensorflow中tf.ConfigProto()的用法详解
Feb 06 Python
解决Python发送Http请求时,中文乱码的问题
Apr 30 Python
python两种获取剪贴板内容的方法
Nov 06 Python
Python中常见的反爬机制及其破解方法总结
Jun 10 Python
Python实现Kmeans聚类算法
Jun 10 #Python
Python request设置HTTPS代理代码解析
Feb 12 #Python
python实现聚类算法原理
Feb 12 #Python
python web.py开发httpserver解决跨域问题实例解析
Feb 12 #Python
python生成tensorflow输入输出的图像格式的方法
Feb 12 #Python
Flask解决跨域的问题示例代码
Feb 12 #Python
tensorflow实现对图片的读取的示例代码
Feb 12 #Python
You might like
如何使用PHP获取指定日期所在月的开始日期与结束日期
2013/08/01 PHP
php中time()和mktime()方法的区别
2013/09/28 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
2014/07/28 PHP
php判断并删除空目录及空子目录的方法
2015/02/11 PHP
使用PHP接受文件并获得其后缀名的方法
2015/08/05 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
js 事件小结 表格区别
2007/08/13 Javascript
Prototype使用指南之selector.js说明
2008/10/26 Javascript
IE浏览器打印的页眉页脚设置解决方法
2009/12/08 Javascript
SOSO地图API使用(一)在地图上画圆实现思路与代码
2013/01/15 Javascript
jquery ajax 调用失败的原因示例介绍
2013/09/27 Javascript
Jquery实现顶部弹出框特效
2015/08/08 Javascript
基于JavaScript实现动态添加删除表格的行
2016/02/01 Javascript
浅谈Angular.js中使用$watch监听模型变化
2017/01/10 Javascript
详解angularJs中关于ng-class的三种使用方式说明
2017/06/02 Javascript
vue 开发一个按钮组件的示例代码
2018/03/27 Javascript
Layui之table中的radio在切换分页时无法记住选中状态的解决方法
2019/09/02 Javascript
微信小程序 搜索框组件代码实例
2019/09/06 Javascript
原生javascript单例模式的应用实例分析
2020/02/23 Javascript
Vue实现跑马灯效果
2020/05/25 Javascript
详解实现vue的数据响应式原理
2021/01/20 Vue.js
[46:23]OG vs EG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Python 中的with关键字使用详解
2016/09/11 Python
Python中datetime模块参考手册
2017/01/13 Python
python如何通过twisted实现数据库异步插入
2018/03/20 Python
使用python 3实现发送邮件功能
2018/06/15 Python
Python利用神经网络解决非线性回归问题实例详解
2019/07/19 Python
Django Celery异步任务队列的实现
2019/07/24 Python
Django分页功能的实现代码详解
2019/07/29 Python
Python图像处理库PIL的ImageGrab模块介绍详解
2020/02/26 Python
pyqt5实现井字棋的示例代码
2020/12/07 Python
加拿大最大的钻石商店:Peoples Jewellers
2018/01/01 全球购物
2014年优秀班主任工作总结
2014/12/16 职场文书
小班下学期幼儿评语
2014/12/30 职场文书
小学四年级作文之最感动的一件事
2019/11/01 职场文书
Canvas三种动态画圆实现方法说明(小结)
2021/04/16 Javascript