Flask:abort()函数
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中。

下面是我测试:
# flask.abort(status, *args, **kwargs) test
@app.route('/abort0')
def abort0():
abort(300) @app.route('/abort1')
def abort1():
abort(400) @app.route('/abort2')
def abort2():
abort(500) @app.route('/abort3')
def abort3():
abort('A test of flask.abort()') @app.route('/abort4')
def abort4():
abort(Response('A test of flask.abort(), Response, ')) @app.route('/abort5')
def abort5():
abort() @app.route('/abort6')
def abort6():
cnum = request.args.get('num', '')
if cnum == '' or not cnum.isdigit():
abort(404)
else:
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页面:
#
@app.errorhandler(404)
def page_not_found(error):
ctx = {}
ctx['name'] = 'Benjamin'
ctx['yourname'] = 'Alice'
return render_template('tmpt1.html', **ctx), 404
页面、Console及命令行输出:虽然页面没有显示404错误,但是,浏览器Console里面显示了此信息——在响应头里面。




flask.abort(status, *args, **kwargs)
Flask:abort()函数的更多相关文章
- flask中abort()函数的使用
一.介绍 #从flask中导入abort from flask import abort abort()函数的作用 可以让开发者在检测到web访问错误时,立即将错误信息返回回去,返回的错误码必须是已知 ...
- flask 视图函数的使用
flask框架 视图函数当中 各种实用情况简单配置 1 建立连接 2 路由参数 3 返回网络状态码 4 自定义错误页面 5 重定向 6 正则url限制 和 url 优化 7 设置和获取cookie # ...
- 11.Flask钩子函数
在Flask中钩子函数是使用特定的装饰器的函数.为什么叫做钩子函数呢,是因为钩子函数可以在正常执行的代码中,插入一段自己想要执行的代码,那么这种函数就叫做钩子函数. before_first_requ ...
- 21、Flask实战第21天:常用的Flask钩子函数
在Flask中钩子函数是使用特定的装饰器装饰的函数.为什么叫钩子函数呢?是因为钩子函数可以在正常执行的代码中,插入一段自己想要执行的代码.那么这种函数就叫做钩子函数. before_first_req ...
- 七十二:flask钩子函数之关于errorhandler的钩子函数
errorhandler:在发生一些异常的时候,如404.500,如果要自定义处理这些错误,就可以使用errorhandler来处理,使用errorhandler需要注意几点: 1.在errorhan ...
- 信号之abort函数
abort函数的功能是使异常程序终止. #include <stdlib.h> void abort(void); 此函数不返回 此函数将SIGABRT信号发送给调用进程(进程不应忽略此信 ...
- Flask视图函数报fmalformed url rule错误的原因
Flask视图函数报fmalformed url rule错误,原因可能是包含中文字符了 把标点符号都重新写一遍英文格式的,可能就不会报这个了
- C语言abort函数
C语言编程入门教程,C语言库函数的abort函数的作用是异常终止一个进程,意味着abort后面的代码将不再执行. #include<stdio.h> #include<stdlib. ...
- Flask框架函数
title: flask学习笔记 subtitle: 1. flask框架函数 date: 2018-12-14 10:17:28 --- Flask学习 学习Miguel Grinberg的2017 ...
随机推荐
- Android Emoji兼容包使用详解
Emoji兼容性 我们经常会遇到这样的问题: 给朋友发的emoji表情, 在自己手机上展示是正常的, 但是到朋友手机上, 却没有展示出来, 或者展示出来了, 但是也跟自己手机上展示的不一样. 所以, ...
- 基于excel导入数据到ms sql server
OLE DB (Object Linking and Embedding, Database, sometimes written as OLEDB or OLE-DB) an API designe ...
- 解题:Poetize6 IncDec Sequence
题面 差分原数列得到差分数组$dif$,这样对于$dif[2]->dif[n]$会多出来两个“空位置”$1$和$n+1$.然后区间加减就变成了使一个位置$+1$,另一个位置$-1$(可以对“空位 ...
- 解题:SCOI 2005 骑士精神
题面 我把这个当做IDA*的模板题的说,说说我个人对IDA*的理解 IDA*是一个DFS,和A*一样,它也有一个乐观的估价函数.这里这个估价函数是用来限制状态的扩展的,如果当前代价加上乐观的估计都无法 ...
- 【bzoj2938】【Poi2000】病毒
题解: 对病毒串建立ac自动机: 有一个无限长的串等价于可以一直在自动机上匹配,等价于自动机上的转移有环: 当然前提是去掉病毒节点的fail子树: 写一个dfs记录是否在栈中,来过没有找到就不必再来了 ...
- Python之旅:流程控制
流程控制之if...else 每条if语句的核心都是一个值为True或False的表达式,这种表达式被称为条件测试. Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定 ...
- haproxy做TCP层的负载均衡
最新项目中发现,大量游戏玩家访问登录服务器时出现延迟,导致玩家无法登录,愿意可能是登录服务器性能达到极限. 所以目前想通过proxy的方式访问登录服务器集群,避免登录延迟. 1.下载haproxy最新 ...
- NATS_03:NATS发布/订阅机制
概念 发布/订阅(Publish/subscribe 或pub/sub)是一种消息范式,消息的发送者(发布者)不是计划发送其消息给特定的接收者(订阅者).而是发布的消息分为不同的类别,而不需要知道什么 ...
- Spark记录-Scala基础语法
如果您熟悉Java语言语法和编程,那么学习Scala将会很容易.Scala和Java之间最大的句法差异在于行结束字符的分号(;) 是可选的. 当编写Scala程序时,它可以被定义为通过调用彼此的方法进 ...
- [LeetCode] 208. Implement Trie (Prefix Tree) ☆☆☆
Implement a trie with insert, search, and startsWith methods. Note:You may assume that all inputs ar ...