flask exception
flask exception
1.1. abort
概念:flask中的异常处理语句,功能类似于python中raise语句,只要触发abort,后面的代码不会执行,abort只能抛出符合http协议的异常状态码。
from werkzeug.exceptions import abort
@app.route('/abort')
def view_abort():
abort(405)
return 'abort
test from main route'
1.2.
errorhandler
errorhandler 装饰器是配合abort函数使用的,是为了进一步提升用户体验,他接收的是abort函数抛出的异常状态码,自定义错误页面和信息。
@app.route('/abort')
def view_abort():
abort(405)
return 'abort
test from main route'
@app.errorhandler(405)
def err_404(e):
return '错误404'
+ str(e)
错误处理有两种:非全局与全局
如果使用蓝图,则下面这种是非全局的。不使用蓝图的情况下则结果没有区别。
@blue_t.errorhandler(405)
def err_405(e):
print('err_405')
return 'error 405
from blueprint blue_t'
app_errorhandler()是全局的
@blue_t.app_errorhandler(405)
def err_404(e):
return 'blueprint error_405'
#return
render_template('error/404.html')
当我们不是使用的工厂模式创建app时,app.errorhandler(401),即可捕捉全局401状态;若使用了create_app方式创建app,则无法进行捕捉,若想捕捉,可以在蓝图中写,如admin.errorhandler(401),即捕捉admin蓝图下所有401状态码,admin.app_errorhandler(401),则是捕捉的全局的401状态码,即其他蓝图中的401状态,也会被捕捉,进行处理
注意:后执行的handler会覆盖掉先声明的handler。
示例:
app.py
@app.errorhandler(405)
def err_404(e):
print('main:err_404')
return '错误404'
+ str(e)
蓝图中声明
@blue_t.app_errorhandler(405)
def err_404(e):
return 'blueprint
error_405'
#return
render_template('error/404.html')
访问/abort会跳转到蓝图中的errorhandler。
2.
总结
蓝图中的异常处理使用@blueprint.errorhandler()
顶层app中的异常处理集中到函数中然后调用。
# 异常处理
def register_errors(app):
@app.errorhandler(405)
def method_not_allowed(e):
return api_abort(405, message='The
method is not allowed for the requested URL.')
flask exception的更多相关文章
- Flask下如何处理Requests 上传中文文件名的问题
一.问题的由来 最近有个项目,叫做文档服务资源中心,类似于七牛,为各个业务系统提供统一的文件资源服务,包括文件的存储.操作管理.下载.预览等.在做文件存储的时候,遇到了这个当指定上传的文件名为 ...
- sae flask 微信公众平台开发
index.wsgi启动服务文件 import sae from evilxr import app application = sae.create_wsgi_app(app) evilxr.py ...
- Flask备注三(Context)
Flask备注三(Context) Flask支持不同的应用场景下,对应不同的local context(本地上下文环境),用来提供当前环境下的资源.lcoal context和全局变量以及局部变量最 ...
- Flask备注二(Configurations, Signals)
Flask备注二(Configuration, Signals) Flask是一个使用python开发Web程序的框架.依赖于Werkzeug提供完整的WSGI支持,以及Jinja2提供templat ...
- Flask 备注一(单元测试,Debugger, Logger)
Flask 备注一(单元测试,Debugger, Logger) Flask是一个使用python开发Web程序的框架.依赖于Werkzeug提供完整的WSGI支持,以及Jinja2提供templat ...
- flask 知识点总结
============================request对象的常用属性============================具体使用方法如下:request.headers, requ ...
- flask 项目的开发经验总结
已经开发了几个flask项目, 是时候总结一下了, 这里涉及到项目源码的组织, 常用的包, 源码示例. =========================需要的 python 包有:========= ...
- flask 添加日志
def add_error_handler(app): for exception in default_exceptions: app.register_error_handler(exceptio ...
- [ZHUAN]Flask学习记录之Flask-SQLAlchemy
From: http://www.cnblogs.com/agmcs/p/4445583.html 各种查询方式:http://www.360doc.com/content/12/0608/11/93 ...
随机推荐
- 【资源分享】半条命2速通AHK脚本
*----------------------------------------------[下载区]----------------------------------------------* ...
- 每天进步一点点------Altium Designer集成库简介及创建
一.集成库概述 Altium Designer 采用了集成库的概念.在集成库中的元件不仅具有原理图中代表元件的符号,还集成了相应的功能模块.如Foot Print 封装,电路仿真模块,信号完整性 ...
- org.apache.catalina.connector.ClientAbortException: java.io.IOException: 你的主机中的软件中止了一个已建立的连接。
org.apache.catalina.connector.ClientAbortException: java.io.IOException: 你的主机中的软件中止了一个已建立的连接. at org ...
- spark启动start-all.sh报错
报错信息如下: spark02: failed to launch: nice -n 0 /usr/local/softwareInstall/spark-2.1.1-bin-hadoop2.7/bi ...
- python基础之函数,递归,内置函数
一.数学定义的函数与python中的函数 初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因 ...
- oracle中以dba_、user_、v$_、all_、session_、index_开头
原 oracle中以dba_.user_.v$_.all_.session_.index_开头 2011年07月05日 11:26:06 clbxp 阅读数:3279 oracle中以dba_.u ...
- acm数论之旅--欧拉函数的证明
随笔 - 20 文章 - 0 评论 - 73 ACM数论之旅7---欧拉函数的证明及代码实现(我会证明都是骗人的╮( ̄▽ ̄)╭) https://blog.csdn.net/chen_ze_hua ...
- wampserver3.0.6 外网 不能访问
# 开始 今天在服务器上安装了wampserver3.0.6 然后在我的电脑浏览器上面打开服务器ip提示 Forbidden 下面一行小字提示没有权限访问"/"目录 # 解决 打开 ...
- linux 自带php切换xampp
查看系统中有哪些用户: cut -d : -f 1 /etc/passwd 查看当前php: which php 删除系统自带php软链 rm -rf /usr/bin/php 切换到PHP新路径 l ...
- 【STM32H7教程】第56章 STM32H7的DMA2D应用之刷色块,位图和Alpha混合
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第56章 STM32H7的DMA2D应用之刷色块, ...