flask学习2

it2023-08-08  67

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()
最新回复(0)