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. Bug搬运工-Forerunner CRC error on 54SG/53SG3 triggers watchdog timeout crash

    这个bug,一般是设备4948 Crash的情况: 标志1:Error Message C4K_SUPERVISOR-2-SOFTERROR: memory inconsistency detecte ...

  2. cnblogs在手机端显示的一些坑

    目前在网上搜了个博皮,很高大上,感兴趣的朋友可以看一下,但是在手机端显示这些html5代码有很多缺陷: 1. h1.h2只能显示一行,如果字数太多,则会被隐藏 就像你现在看到的,h1原本内容为: 目前 ...

  3. 【PAT甲级】1109 Group Photo (25分)(模拟)

    题意: 输入两个整数N和K(N<=1e4,K<=10),分别表示人数和行数,接着输入N行每行包括学生的姓名(八位无空格字母且唯一)和身高([30,300]的整数).按照身高逆序,姓名字典序 ...

  4. 问题:宿主机访问不到虚拟机内的docker容器

    问题描述:初学Docker,主机Windows 10,虚拟机Cent OS7 运行了一个docker容器(Tomcat7),宿主机无法访问容器运行的服务. 问题原因:宿主机无法访问docker容器ip ...

  5. 数论算法 Plus

    好像有不少更新:) 本文主要记录一些不是那么熟悉的高级数论算法的推导与应用. exBSGS算法 解决模数.底数不互质的离散对数问题. (1)为何\(BSGS\)算法不再适用:\(A\)不一定存在逆元, ...

  6. bootstrap的pillbox使用

    使用bootstrap的cameo模版,搭建了一个cms系统,使用pillbox做显示的时候,出现点击×失败的问题. 分析了一下pillbox这个控件的使用方法. pillbox的样例在cameo/f ...

  7. Python隐藏特性:字符串驻留、常量折叠

    下面是Python字符串的一些微妙的特性,绝对会让你大吃一惊. 案例一: >>> a = "some_string" >>> id(a) 140 ...

  8. SQL常用语句和函数

    从一个表中选取数据插入到另一个表中: select column_name(s) into new_table_name from old_table_name --new_table_name表不必 ...

  9. ACM-ICPC实验室20.2.19测试-图论

    B.Harborfan的新年拜访Ⅱ 就是一道tarjan缩点的裸题. 建图比较麻烦 以后遇到这种建图,先用循环把样例实现出来,再对着循环写建图公式 #include<bits/stdc++.h& ...

  10. svn怎么修改用户名和密码

    链接:https://blog.csdn.net/qq_36826506/article/details/80915431