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的更多相关文章

  1. Flask下如何处理Requests 上传中文文件名的问题

    一.问题的由来     最近有个项目,叫做文档服务资源中心,类似于七牛,为各个业务系统提供统一的文件资源服务,包括文件的存储.操作管理.下载.预览等.在做文件存储的时候,遇到了这个当指定上传的文件名为 ...

  2. sae flask 微信公众平台开发

    index.wsgi启动服务文件 import sae from evilxr import app application = sae.create_wsgi_app(app) evilxr.py ...

  3. Flask备注三(Context)

    Flask备注三(Context) Flask支持不同的应用场景下,对应不同的local context(本地上下文环境),用来提供当前环境下的资源.lcoal context和全局变量以及局部变量最 ...

  4. Flask备注二(Configurations, Signals)

    Flask备注二(Configuration, Signals) Flask是一个使用python开发Web程序的框架.依赖于Werkzeug提供完整的WSGI支持,以及Jinja2提供templat ...

  5. Flask 备注一(单元测试,Debugger, Logger)

    Flask 备注一(单元测试,Debugger, Logger) Flask是一个使用python开发Web程序的框架.依赖于Werkzeug提供完整的WSGI支持,以及Jinja2提供templat ...

  6. flask 知识点总结

    ============================request对象的常用属性============================具体使用方法如下:request.headers, requ ...

  7. flask 项目的开发经验总结

    已经开发了几个flask项目, 是时候总结一下了, 这里涉及到项目源码的组织, 常用的包, 源码示例. =========================需要的 python 包有:========= ...

  8. flask 添加日志

    def add_error_handler(app): for exception in default_exceptions: app.register_error_handler(exceptio ...

  9. [ZHUAN]Flask学习记录之Flask-SQLAlchemy

    From: http://www.cnblogs.com/agmcs/p/4445583.html 各种查询方式:http://www.360doc.com/content/12/0608/11/93 ...

随机推荐

  1. win10编译OPenBlas

    之前没有编译过OpenBlas,今天试了一下. 与参考博客不同之处,我的系统是win10,opencOpenBlas版本0.2.14,Visual Studio版本15. 编译使用MSYS2安装min ...

  2. Codeforces 1315C Restoring Permutation

    You are given a sequence b1,b2,…,bnb1,b2,…,bn . Find the lexicographically minimal permutation a1,a2 ...

  3. 微信小程序苹果手机调用camera原生组件拍照后不退出

    最近做微信小程序时,用到小程序的原生组件camera时,踩到一个bug. 在给camera设置样式position:absolute;绝对定位后,IOS调用camera原生组件拍照后退不出来. 不使用 ...

  4. 507,介绍一下标准的css盒子模型?低版本ie的盒子模型有什么不同的?

    有两种,IE盒子模型,另外是W3C盒子模型: 盒模型都包括:内容(content),填充(padding),边界(margin),边框(border): 区别:IE的content部分吧border和 ...

  5. Unity引用System.Windows.Forms遇到的一些坑

    这两天在做一个unity打开文件选择框的功能.网上找到两种方法, 第一种是调用win32打开对话框,这个挺好,但是有个致命的问题,没办法多选!!!多选的话返回的是根目录的路径,文件名返回不了,找了半天 ...

  6. 阿里云云服务器ECS开发者工具包(SDK)

    阿里云云服务器ECS开发者工具包(SDK) 前提条件 使用Alibaba Cloud SDK for Java,您需要一个阿里云账号和访问密钥(AccessKey). 请在阿里云控制台中的Access ...

  7. 学习笔记(26)- plato-端到端模型-定闹钟

    今天用了定闹钟的场景语料,在plato框架尝试了端到端的模型. 本文先记录英文的训练过程,然后记录中文的训练过程. 训练端到端的模型 发现使用英文的模型,还是显示有中文,所以,新建目录,重新训练 1. ...

  8. HTML去除多余空白区域的方法

    在head标记中添加html,body{height:100%;}即可. 实例如下 <head><style>html,body{height:90%;}</style& ...

  9. LeetCode练题——58. Length of Last Word

    1.题目 58. Length of Last Word——Easy Given a string s consists of upper/lower-case alphabets and empty ...

  10. RedisTemplate 获取过期时间的问题

    RedisTemplate redisTemplate; Long seconds = redisTemplate.opsForValue().getOperations().getExpire(&q ...