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 ...
随机推荐
- CentOS7安装jdk教程
引言Oracle JDK和OpenJDK的简单介绍Oracle JDK是基于Java标准版规范实现的,以二进制产品的形式发布.它支持多种操作系统,如Windows,Linux,Solaris,MacO ...
- 启动MySQL5.7时报错:initialize specified but the data directory has files in it. Aborting.
启动MySQL5.7时报错:initialize specified but the data directory has files in it. Aborting 解决方法: vim /etc/m ...
- CI 框架多表关联查询
public function getCollectData($limit, $page, $search_user, $search_phone, $orderfield, $ordertype) ...
- 4、maven——构建生命周期
什么是生命周期? 构建生命周期是一组阶段的序列(sequence of phase),每个阶段定义了目标被执行的顺序,这里的阶段就是生命周期的一部分. 一个典型的Maven生命周期由一些几个阶段的序列 ...
- animate使用方法
链接:https://www.cnblogs.com/xiaohuochai/p/7372665.html
- IIS反向代理配置教程(最终完整版本)
IIS代理配置教程 插件下载:https://download.csdn.net/download/song_yan_/11996489 一.安装反向代理插件 1.rewrite插件安装 (1) 双击 ...
- 2020 CCPC Wannafly Winter Camp Day1 - I. K小数查询(分块)
题目链接:K小数查询 题意:给你一个长度为$n$序列$A$,有$m$个操作,操作分为两种: 输入$x,y,c$,表示对$i\in[x,y] $,令$A_{i}=min(A_{i},c)$ 输入$x,y ...
- VMware升级到15版本虚拟机黑屏的解决方法
1.启动VMware15虚拟机,在菜单栏找到:虚拟机→管理→更改硬件兼容性 2.打开该项,弹出更改硬件兼容性向导对话框,点 下一步,接下来把硬件兼容性改为Workstation 12.x 3.根据提 ...
- rapidxml读xml文件
student.xml文件内容: int readXML(void) { rapidxml::file<> file("student.xml"); rapidxml: ...
- jmh 微基准测试
选择依据:对某段代码的性能测试. 1.运行方法 mvn clean install java -jar target/benchmarks.jar JMHSample_02 -f 1 2.maven ...