Flask框架请求钩子与request请求对象用法实例分析
本文实例讲述了Flask框架请求钩子与request请求对象。分享给大家供大家参考,具体如下:
请求钩子
在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如:
- 在请求开始时,建立数据库连接
- 在请求开始时,根据需求进行权限校验
- 在请求结束时,指定数据的交互格式
为了让每个视图函数避免编写重复功能的代码,Flask提供了通用设施的功能,即请求钩子。
请求钩子是通过装饰器的形式实现,Flask支持如下四种请求钩子:
请求钩子 | 描述 |
---|---|
before_first_request | 在处理第一个请求前执行 |
before_request | 在处理每一个请求前执行 |
after_request | 如果没有抛出错误,则在每一次请求后执行(接受一个参数:视图函数做出的响应) |
teardown_request | 在每次请求后执行(接受一个参数:用来接受错误信息) |
例:
from flask import Flask app = Flask(__name__) # 在第一次请求之前调用,可以在此方法内部做一些初始化操作 @app.before_first_request def before_first_request(): print("before_first_request") # 在每次请求之前调用,这时候已经有请求了,可能在这个方法里面做请求的校验 # 如果请求的校验不成功,可以直接在此方法中进行响应,直接return之后那么就不会执行视图函数 @app.before_request def before_request(): print("before_request") # if 请求不符合条件: # return "laowang" # 在执行完视图函数之后会调用,并且会把视图函数所生成的响应传入,可以在此方法中对响应做最后一步统一的处理 @app.after_request def after_request(response): print("after_request") response.headers["Content-Type"] = "application/json" return response # 请每一次请求之后都会调用,会接受一个参数,参数是服务器出现的错误信息 @app.teardown_request def teardown_request(e): print("teardown_request") @app.route('/') def index(): return 'index' if __name__ == '__main__': app.run(debug=True)
第一次访问打印结果:
第二次访问打印结果:
request对象
属性 | 说明 | 类型 |
---|---|---|
data | 记录请求的数据,并转换为字符串 | * |
form | 记录请求中的表单数据 | MultiDict |
args | 记录请求中的查询参数 | MultiDict |
cookies | 记录请求中的cookie信息 | Dict |
headers | 记录请求中的报文头 | EnvironHeaders |
method | 记录请求使用的HTTP方法 | GET/POST… |
url | 记录请求的URL地址 | string |
files | 记录请求上传的文件 | * |
获取request对象:
例:
request.url # 请求的url地址 request.args.get("password")) # 获取不到,返回none, request.args.get("password","aaa")) # 获取不到,返回aaa
希望本文所述对大家基于Flask框架的Python程序设计有所帮助。
相关推荐
-
flask中过滤器的使用详解
过滤器 过滤器的本质就是函数.有时候我们不仅仅只是需要输出变量的值,我们还需要修改变量的显示,甚至格式化.运算等等,而在模板中是不能直接调用 Python 中的某些方法,那么这就用到了过滤器. 使用方式: 过滤器的使用方式为:变量名 | 过滤器. {{variable | filter_name(*args)}} 如果没有任何参数传给过滤器,则可以把括号省略掉, flask中过滤器支持链式调用 {{variable | filter_name}} 常见内建过滤器 字符串操作 safe:禁用转义
-
Flask框架路由和视图用法实例分析
本文实例讲述了Flask框架路由和视图用法.分享给大家供大家参考,具体如下: 创建一个简单flask框架程序 #1.导入Flask类 from flask import Flask #2.创建Flask对象接收一个参数__name__,它会指向程序所在的包 app = Flask(__name__) #3.装饰器的作用是将路由映射到视图函数index @app.route('/') def index(): return 'Hello World' #4.Flask应用程序实例的run方法,启动
-
Flask之请求钩子的实现
请求钩子 通过装饰器为一个模块添加请求钩子, 对当前模块的请求进行额外的处理. 比如权限验证. 说白了,就是在执行视图函数前后你可以进行一些处理,Flask使用装饰器为我们提供了注册通用函数的功能. 1.before_first_request:在处理第一个请求前执行 before_first_request 在对应用程序实例的第一个请求之前注册要运行的函数, 只会执行一次 #: A lists of functions that should be called at the beginnin
-
flask 实现token机制的示例代码
token 的生成 用token校验身份,是前后端交互的常用方式. 它有以下特性: 会失效 加密 可以根据它拿到用户的信息 生成方式( 内部配置的私钥+有效期+用户的id ) #导入依赖包 from flask import request,jsonify,current_app from itsdangerous import TimedJSONWebSignatureSerializer as Serializer def create_token(api_user): ''' 生成toke
-
Flask核心机制之上下文源码剖析
一.前言 了解过flask的python开发者想必都知道flask中核心机制莫过于上下文管理,当然学习flask如果不了解其中的处理流程,可能在很多问题上不能得到解决,当然我在写本篇文章之前也看到了很多博文有关于对flask上下文管理的剖析都非常到位,当然为了学习flask我也把对flask上下文理解写下来供自己参考,也希望对其他人有所帮助. 二.知识储备 threadlocal 在多线程中,线程间的数据是共享的, 但是每个线程想要有自己的数据该怎么实现? python中的threading.l
-
flask框架自定义过滤器示例【markdown文件读取和展示功能】
本文实例讲述了flask框架自定义过滤器.分享给大家供大家参考,具体如下: 除了一些内置的join length safe等过滤器外, flask还提供了自定义过滤器的功能. 一. 自定义一个mardown过滤器 自定义一个markdown过滤器, 使过滤器可以像safe解析html标签一样解析md语法. 安装库 pip install Markdown==2.3.1 自定义过滤器 使用@app.template_filter('md')过滤器, 此时便拥有了名为md的过滤器. @app.tem
-
Flask框架钩子函数功能与用法分析
本文实例讲述了Flask框架钩子函数功能与用法.分享给大家供大家参考,具体如下: 在Flask中钩子函数是使用特定的装饰器的函数.为什么叫做钩子函数呢,是因为钩子函数可以在正常执行的代码中,插入一段自己想要执行的代码,那么这种函数就叫做钩子函数. before_first_request:Flask项目第一次部署后会执行的钩子函数. before_request:请求已经到达了Flask,但是还没有进入到具体的视图函数之前调用.一般这个就是在函数之前,我们可以把一些后面需要用到的数据先处理好,方
-
python框架flask表单实现详解
这篇文章主要介绍了python框架flask表单实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 表单 表单用于注册,修改用户数据等场景. flask-wtf提供了一个包,可以创建表单:pip install flask-wtf 为了防止跨域请求,flask_wtf自己生成一个秘钥,用秘钥生成加密口令,然后用口令验证表单中的数据真伪(是否被篡改过) from flask import Flask from flask import req
-
Flask框架中request、请求钩子、上下文用法分析
本文实例讲述了Flask框架中request.请求钩子.上下文用法.分享给大家供大家参考,具体如下: request 就是flask中代表当前请求的request对象: 常用的属性如下: 属性 说明 类型 data 记录请求的数据,并转换为字符串 * form 记录请求中的表单数据 MultiDict args 记录请求中的查询参数 MultiDict cookies 记录请求中的cookie信息 Dict headers 记录请求中的报文头 EnvironHeaders method 记录请求
-
Flask框架请求钩子与request请求对象用法实例分析
本文实例讲述了Flask框架请求钩子与request请求对象.分享给大家供大家参考,具体如下: 请求钩子 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: 在请求开始时,建立数据库连接 在请求开始时,根据需求进行权限校验 在请求结束时,指定数据的交互格式 为了让每个视图函数避免编写重复功能的代码,Flask提供了通用设施的功能,即请求钩子. 请求钩子是通过装饰器的形式实现,Flask支持如下四种请求钩子: 请求钩子 描述 before_first_request 在处理第一个
-
Django框架HttpRequest对象用法实例分析
本文实例讲述了Django框架HttpRequest对象用法.分享给大家供大家参考,具体如下: 1.URL路径参数 (1)位置参数:使用正则分组,与视图中的参数一一对应,不可换位置 例: url(r'^(\d+)/(\d+)/$', views.index) def index(request, 参数1, 参数2): ... (2)关键字参数:参数位置可以变,与关键字保持一致即可 例: url(r'^(?P<value1>\d+)/(?P<value2>\d+)/$', views
-
Flask框架响应、调度方法和蓝图操作实例分析
本文实例讲述了Flask框架响应.调度方法和蓝图操作.分享给大家供大家参考,具体如下: 响应 像现在大部分的互联网应用用的数据传输格式都是JSON,当用户访问一个URL,我们如何通过Flask返回JSON的响应: 普通做法: @app.route("/") def showInfo(): return jsonify({"name":"老王","age":18}) 当我们的应用有大量的URL时,我们需要每次都用jsonify转
-
Django框架HttpResponse对象用法实例分析
本文实例讲述了Django框架HttpResponse对象用法.分享给大家供大家参考,具体如下: 1.HttpResponse 可通过HttpResponse构造响应对象: HttpResponse(content=响应体, content_type=响应体数据类型, status=状态码) 响应头可以直接将HttpResponse对象当做字典进行响应头键值对的设置: response = HttpResponse() response['itcast'] = 'Python' # 自定义响应头
-
java中response对象用法实例分析
本文实例讲述了java中response对象用法.分享给大家供大家参考,具体如下: <jsp:forward>动作元素用于运行时在服务器端结束当前页面的执行,并从当前页面转向指定页面. 使用response对象的setHeader()方法可以设置页面的自动刷新时间间隔.实现每隔60秒重新加载本页面的语句为: 复制代码 代码如下: response.setHeader("refresh",60); 而实现3秒后浏览器加载新页面http://www.jb51.net的语句为:
-
javascript中cookie对象用法实例分析
本文实例讲述了javascript中cookie对象用法.分享给大家供大家参考.具体如下: 属性 name 唯一必须设置的属性,表示cookie的名称 expires 指定cookie的存活周期,如不设置,浏览器关闭自动失效 path 决定cookie对于服务器对于其他网页的可用性,一般情况下, cookie对同一目录下的所有页面都可用,当设置path属性后,cookie只对指定路径及子路径下的所有网页有效 domain
-
python编程进阶之类和对象用法实例分析
本文实例讲述了python类和对象用法.分享给大家供大家参考,具体如下: 前面我们都是用python面向过程编程,现在来用python创建类和对象,面向对象编程.类和对象是面向对象编程的两个主要方面.类创建一个新类型,而对象这个类的 实例 .这类似于你有一个int类型的变量,这存储整数的变量是int类的实例(对象).在python中,类和实例中的变量称为域,类和实例中的函数称为方法,域和方法都是类和实例的属性. 类的定义 在定义类或者它的函数的时候,如果没有参数的话,需要把参数写为self,这样
-
Laravel5.1 框架Request请求操作常见用法实例分析
本文实例讲述了Laravel5.1 框架Request请求操作常见用法.分享给大家供大家参考,具体如下: 这篇主要说说Request 每当用户访问我们的网站功能时都会用到它 我们可以使用Request中的一些数据来做出适当的相应. 1 常用的属性和方法 我们可以从Request中取到一些重要属性来做一些逻辑处理,下面是Request中常用的属性: 1.1 获取用户输入 (前提工作 创建一个RESTful风格的控制器 并声明路由),Request可以获取到用户输入的数据 我们来看看 1.1.1 i
-
Flask框架Flask-Principal基本用法实例分析
本文实例讲述了Flask框架Flask-Principal基本用法.分享给大家供大家参考,具体如下: Flask-Principal是Flask框架的一个扩展,主要主件是Identity,Needs,Permission和IdentityContext. Identity:代表用户,从各个位置存储和加载每个请求,包含用户拥有的访问权限. Needs:需求是访问控制的最小粒度,代表了这种情况的具体参数.例如:管理用户.可以编辑帖子. Permission:权限 IdentityContext:针对
-
Flask框架信号用法实例分析
本文实例讲述了Flask框架信号用法.分享给大家供大家参考,具体如下: 项目功能复杂,代码量越大,就越需要做业务解耦.否则在其之上做开发和维护是很痛苦的,尤其是对于团队的新人.Flask从0.6开始,通过Blinker提供了信号支持.信号就是在框架核心功能或者一些Flask扩展发生工作时所发送的通知,用于帮助你解耦应用. Blinker的使用 安装 pip install blinker Blinker的信号与接收方式 from blinker import signal s = signal(
随机推荐
- CentOS 6.4安装配置LAMP服务器(Apache+PHP5+MySQL)
- Java 快速排序(QuickSort)原理及实现代码
- iOS开发系列--详细介绍数据存取
- ASP.NET jQuery 实例10 动态修改hyperlink的URL值
- c# NameValueCollection类读取配置信息
- PHP简单系统数据添加以及数据删除模块源文件下载
- Android编程自定义扁平化对话框示例
- JS数组去重(4种方法)
- js实现音频控制进度条功能
- PHP中的密码加密的解决方案总结
- 通过php快速统计某个数据库中每张表的数据量
- 高亮显示web页表格行的javascript代码
- Powershell小技巧之捕获脚本内部的异常
- Avalonjs 实现简单购物车功能(实例代码)
- Android编程实现将应用强制安装到手机内存的方法
- 用js来刷新当前页面保留参数的具体实现
- 一个可携带附加消息的增强消息框MessageBoxEx
- 第十二节 类的自动加载 [12]
- Android 提交或者上传数据时的dialog弹框动画效果
- 详解PHP中的外观模式facade pattern