8.请求钩子
8.1 before_first_request
#再在第一次请求之前调用,可以做初始化操作
@app.before_first_request
def before_first_request():
print('--------->before_first_request')
8.2 before_request
@app.before_request
def before_request():
print('--------->before_request')
#在每一次请求之前调用,请求已经到来,可以再这个方法中做请求校验
#如果请求校验不通过,直接在当前方法中进行响应,直接return之后,不需要再进行视图函数的处理
8.3 after_request
@app.after_request
def after_request(response):
print('---------->after_request')
response.headers['Content-Tpye']='application/json'
return response
没有异常的情况下,在执行完视图函数之后调用,会将视图函数所生成的响应传入,做相关的比如json添加头信息
8.4 teardown_request
@app.teardown_request
def tear_down(e):
print('---------->teardown')
即使有异常,在每次请求后执行,接收的参数为异常信息
9.请求上下文参数
from flask import Flask,request
属性说明类型
data记录请求的数据,并转换为字符串*form记录请求中的表单数据MultiDictargs记录请求中的查询参数MultiDictcookies记录请求中的cookie信息Dictheaders记录请求中的报文头EnvironHeadersmethod记录请求使用的HTTP方法GET/POSTurl记录请求的URL地址stringfiles记录请求上传的文件*query_string记录请求中的查询参数bytes
注意:
query_string 获取的参数是bytes类型,如果需要取出数据,需要进行下一步处理
args 获取的参数是类字典类型,直接用get获取
10.状态保持
10.1 cookie
from flask import Flask,make_response,request
10.1.1 设置cookie
@app.route('/index')
def index():
response = make_response('index')
response.set_cookie('username','xx',max_age=3600)
return response
max_age 为最大存在时间
10.1.2 查询cookie
@app.route('/cookies')
def get_cookie():
return request.cookies.get('username','None')
10.1.3 删除cookie
@app.route('/deleting')
def del_cookie():
response = make_response('delete cookie')
response.delete_cookie('username')
return response
10.2 session
from flask import Flask,make_response,session
10.2.1 设置密钥
class Config(object):
SECRET_KEY='kasjbd'
app.config.from_object(Config)
10.2.2 设置session
@app.route('/index')
def index():
session['username']='xxxx'
response = make_response('index')
return response
10.2.3 查看session
@app.route('/session')
def get_session():
return session.get('username')
11.应用上下文
from flask import Flask,current_app,g,make_response
app=Flask(__name__)
@app.route('/index')
def index():
print(current_app)
print(current_app.name)
print(current_app.config)
current_app.test = '这是测试数据'
response = make_response('index')
return response
@app.route('/index123')
def index123():
print('这是通过current_app传递的数据',current_app.test)
response = make_response('index')
return response
if __name__ == '__main__':
app.run(debug=True)
#请求上下文request session:保存这客户端与服务器之问交互的数据
#应用上下文 current _app g flask程序在运行的过程中﹐保存的一些配置信息﹐程序名﹐数据库链接等
12.在命令行中启动flask
from flask import Flask
from flask_script import Manager
app=Flask(__name__)
manage =Manager(app)
if __name__ == '__main__':
manage.run()