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()函数的更多相关文章

  1. flask中abort()函数的使用

    一.介绍 #从flask中导入abort from flask import abort abort()函数的作用 可以让开发者在检测到web访问错误时,立即将错误信息返回回去,返回的错误码必须是已知 ...

  2. flask 视图函数的使用

    flask框架 视图函数当中 各种实用情况简单配置 1 建立连接 2 路由参数 3 返回网络状态码 4 自定义错误页面 5 重定向 6 正则url限制 和 url 优化 7 设置和获取cookie # ...

  3. 11.Flask钩子函数

    在Flask中钩子函数是使用特定的装饰器的函数.为什么叫做钩子函数呢,是因为钩子函数可以在正常执行的代码中,插入一段自己想要执行的代码,那么这种函数就叫做钩子函数. before_first_requ ...

  4. 21、Flask实战第21天:常用的Flask钩子函数

    在Flask中钩子函数是使用特定的装饰器装饰的函数.为什么叫钩子函数呢?是因为钩子函数可以在正常执行的代码中,插入一段自己想要执行的代码.那么这种函数就叫做钩子函数. before_first_req ...

  5. 七十二:flask钩子函数之关于errorhandler的钩子函数

    errorhandler:在发生一些异常的时候,如404.500,如果要自定义处理这些错误,就可以使用errorhandler来处理,使用errorhandler需要注意几点: 1.在errorhan ...

  6. 信号之abort函数

    abort函数的功能是使异常程序终止. #include <stdlib.h> void abort(void); 此函数不返回 此函数将SIGABRT信号发送给调用进程(进程不应忽略此信 ...

  7. Flask视图函数报fmalformed url rule错误的原因

    Flask视图函数报fmalformed url rule错误,原因可能是包含中文字符了 把标点符号都重新写一遍英文格式的,可能就不会报这个了

  8. C语言abort函数

    C语言编程入门教程,C语言库函数的abort函数的作用是异常终止一个进程,意味着abort后面的代码将不再执行. #include<stdio.h> #include<stdlib. ...

  9. Flask框架函数

    title: flask学习笔记 subtitle: 1. flask框架函数 date: 2018-12-14 10:17:28 --- Flask学习 学习Miguel Grinberg的2017 ...

随机推荐

  1. BZOJ 2337 XOR和路径 | 高斯消元 期望 位运算

    BZOJ 2337 XOR和路径 题解 这道题和游走那道题很像,但又不是完全相同. 因为异或,所以我们考虑拆位,分别考虑每一位: 设x[u]是从点u出发.到达点n时这一位异或和是1的概率. 对于所有这 ...

  2. 洛谷 P2022 有趣的数 解题报告

    P2022 有趣的数 题目描述 让我们来考虑1到N的正整数集合.让我们把集合中的元素按照字典序排列,例如当N=11时,其顺序应该为:1,10,11,2,3,4,5,6,7,8,9. 定义K在N个数中的 ...

  3. POI操作word和html相互转化

    下面是里两个类:第一个类是html转为word,第二个是word转html(最下面附上jar包下载链接) package com.wz.poi.wordHtml; /** * 2018/4/24 * ...

  4. Android Studio 换主题(Material Theme..)

    1.去如下网址下载自己喜欢的主题文件xx.jar http://color-themes.com/?view=index 2. 导入方式 下载主题—xxx.jar 注意:如果我们下载下来的jar名字如 ...

  5. js 读写 cookie 简单实现

    const getItem = key => { let ca = document.cookie.split('; '); for (let i = 0; i < ca.length; ...

  6. 读Bayes' Theorem

    Bayes' Theorem定理的原理说明,三个简单的例子来说明用法及一些练习. Bayes' Theorem就是概率问题,论文相对比较好理解,也不必做什么笔记.

  7. Java入门:基础算法之求数组元素的和

    本程序计算数组中所有元素的和. 代码1:数组元素由程序内部初始化 /** * @author: 理工云课堂 * @description: 求数组元素的和 */ class SumOfArray{ p ...

  8. django中的认证与登录

    认证登录 django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1  authenticate(**credentials)    提供了用户认证,即验证用户名以及密码是否 ...

  9. python的if条件语句的语法和案例

    1.条件语句 缩进用4个空格 if条件: #条件成功, else: #条件不成功 if条件:{ #条件成功, #条件成功, }else{ #条件不成功, #条件不成功, } if的语法就是这样或者是用 ...

  10. kubernetes node管理

    目录 Node的扩缩容 删除node节点 Node的隔离与恢复 通过配置文件实现 通过命令行的方式实现 恢复 更新资源对象的label 给一个node添加一个label 将pod调度到指定的node ...