博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flask:abort()函数
阅读量:2241 次
发布时间:2019-05-09

本文共 2001 字,大约阅读时间需要 6 分钟。

Windows 10家庭中文版,Python 3.6.4,Flask 1.0.2

 

abort()函数用于提前退出(Google翻译abort)一个请求,并用指定的错误码返回

 

函数原型如下:

flask.abort(status, *args, **kwargs)

 

第一个status参数可以是一个状态码,比如,404,也可以是一个WSGI应用,必不可少!示例如下:

abort(404)  # 404 Not Found

abort(Response('Hello World')) # Response包装的一个WSGI应用

 

注意,状态码要出现在Flask定义的异常号列表(the list of exceptions)中,否则会引发内部服务器错误,比如,传递2XX、3XX就不可以的。

 

异常号列表如下:定义在werkzeug.exceptions.default_exceptions中。

 

下面是我测试:

1 # flask.abort(status, *args, **kwargs) test 2 @app.route('/abort0') 3 def abort0(): 4     abort(300) 5  6 @app.route('/abort1') 7 def abort1(): 8     abort(400) 9 10 @app.route('/abort2')11 def abort2():12     abort(500)13 14 @app.route('/abort3')15 def abort3():16     abort('A test of flask.abort()')17 18 @app.route('/abort4')19 def abort4():20     abort(Response('A test of flask.abort(), Response, '))21 22 @app.route('/abort5')23 def abort5():24     abort()25 26 @app.route('/abort6')27 def abort6():28     cnum = request.args.get('num', '')29     if cnum == '' or  not cnum.isdigit():30         abort(404)31     else:32         abort(int(cnum))

abort0~4是最初写的,后来写了abort5、6。

 

下面是访问各个链接时页面及命令行显示(出错时)的内容:

/abort0

 

/abort1

 

/abort2

 

/abort3

 

/abort4

 

/abort5

 

/abort6

 

/abort6?num=100

 

/abort6?num=505

 

/abort6?num=431

 

/abort6?num=tom

 

 

测试完毕。对abort()函数的使用更熟悉了,该踩的坑都算踩过了吧。

 

abort()函数的使用有何好处呢?可以让开发者在检测到Web访问错误时,立即将错误信息返回。错误码中已对应的错误,使用错误码返回即可,否则,返回另外的WSGI应用。

 

另外,在使用abort()函数要做日志记录——错误日志!前,很重要!否则,日志是记录不了的!Quickstart文档中也有说明。

 

絮叨:

不过,对于传递WSGI应用这个功能还有不清楚的地方,等熟悉了什么是WSGI之后,再找机会记录。

 

通过编写上面的代码,第一次写了有条件判断的代码,熟悉了字符串怎么转整数、转整数前的判断等。

 

感觉还有一点东西没有记录,是什么呢?对了,如何和定制错误页面搭配使用?比如已经为404定制了错误页面,这时执行abort(Response(...)),这时是返回定义错误页面呢,还是

返回abort里面的WSGI应用?

使用下面的代码初步进行了测试,测试结果显示 返回了定制的404页面:

1 # 10432 @app.errorhandler(404)3 def page_not_found(error):4     ctx = {}5     ctx['name'] = 'Benjamin'6     ctx['yourname'] = 'Alice'7     return render_template('tmpt1.html', **ctx), 404

页面、Console及命令行输出:虽然页面没有显示404错误,但是,浏览器Console里面显示了此信息——在响应头里面。

flask.abort(status*args**kwargs)

转载于:https://www.cnblogs.com/luo630/p/9062739.html

你可能感兴趣的文章
【selenium】selenium ide的安装过程
查看>>
【手机自动化测试】monkey测试
查看>>
【英语】软件开发常用英语词汇
查看>>
Fiddler 抓包工具总结
查看>>
【雅思】雅思需要购买和准备的学习资料
查看>>
【雅思】雅思写作作业(1)
查看>>
【雅思】【大作文】【审题作业】关于同不同意的审题作业(重点)
查看>>
【Loadrunner】通过loadrunner录制时候有事件但是白页无法出来登录页怎么办?
查看>>
【English】【托业】【四六级】写译高频词汇
查看>>
【托业】【新东方全真模拟】01~02-----P5~6
查看>>
【托业】【新东方全真模拟】03~04-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST05~06-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST09~10-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST07~08-----P5~6
查看>>
solver及其配置
查看>>
JAVA多线程之volatile 与 synchronized 的比较
查看>>
Java集合框架知识梳理
查看>>
笔试题(一)—— java基础
查看>>
Redis学习笔记(三)—— 使用redis客户端连接windows和linux下的redis并解决无法连接redis的问题
查看>>
Intellij IDEA使用(一)—— 安装Intellij IDEA(ideaIU-2017.2.3)并完成Intellij IDEA的简单配置
查看>>