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 ...
随机推荐
- BZOJ 2337 XOR和路径 | 高斯消元 期望 位运算
BZOJ 2337 XOR和路径 题解 这道题和游走那道题很像,但又不是完全相同. 因为异或,所以我们考虑拆位,分别考虑每一位: 设x[u]是从点u出发.到达点n时这一位异或和是1的概率. 对于所有这 ...
- 洛谷 P2022 有趣的数 解题报告
P2022 有趣的数 题目描述 让我们来考虑1到N的正整数集合.让我们把集合中的元素按照字典序排列,例如当N=11时,其顺序应该为:1,10,11,2,3,4,5,6,7,8,9. 定义K在N个数中的 ...
- POI操作word和html相互转化
下面是里两个类:第一个类是html转为word,第二个是word转html(最下面附上jar包下载链接) package com.wz.poi.wordHtml; /** * 2018/4/24 * ...
- Android Studio 换主题(Material Theme..)
1.去如下网址下载自己喜欢的主题文件xx.jar http://color-themes.com/?view=index 2. 导入方式 下载主题—xxx.jar 注意:如果我们下载下来的jar名字如 ...
- js 读写 cookie 简单实现
const getItem = key => { let ca = document.cookie.split('; '); for (let i = 0; i < ca.length; ...
- 读Bayes' Theorem
Bayes' Theorem定理的原理说明,三个简单的例子来说明用法及一些练习. Bayes' Theorem就是概率问题,论文相对比较好理解,也不必做什么笔记.
- Java入门:基础算法之求数组元素的和
本程序计算数组中所有元素的和. 代码1:数组元素由程序内部初始化 /** * @author: 理工云课堂 * @description: 求数组元素的和 */ class SumOfArray{ p ...
- django中的认证与登录
认证登录 django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1 authenticate(**credentials) 提供了用户认证,即验证用户名以及密码是否 ...
- python的if条件语句的语法和案例
1.条件语句 缩进用4个空格 if条件: #条件成功, else: #条件不成功 if条件:{ #条件成功, #条件成功, }else{ #条件不成功, #条件不成功, } if的语法就是这样或者是用 ...
- kubernetes node管理
目录 Node的扩缩容 删除node节点 Node的隔离与恢复 通过配置文件实现 通过命令行的方式实现 恢复 更新资源对象的label 给一个node添加一个label 将pod调度到指定的node ...