Step1:什么是上下文
上下文相当于一个容器,保存了 Flask 程序运行过程中的一些信息。Flask 中有两种上下文,请求上下文(request 和 session )和应用上下文(current_app和g)。
Step2:上下文的使用说明
- request:请求对象,封装了客户端发出的http请求中的内容
- session:用户会话,用于存储请求之间需要‘记住‘的值的词典
- current_app:当前激活程序的程序实例
- g:处理请求时用作临时存储的对象。每次请求会重设这个变量
Step3:上下文代码示例
1 from flask import request,Flask,current_app,session,g 2 from datetime import timedelta 3 import os 4 5 app = Flask(__name__) 6 app.config['SECRET_KEY'] = os.urandom(24) 7 app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) # 配置7天有效 8 9 #测试请求上下文request 10 @app.route('/request_context') 11 def request_context(): 12 user_agent = request.headers.get("User-Agent") 13 # return "<p>Your browser is %s</p>" % user_agent 14 return f"<h1>Hello World!</h1>\nHello World!{user_agent}" 15 16 #测试应用上下文current_app 17 @app.route("/currentapp_context") 18 def currentapp_context(): 19 return "hello %s" % current_app.name 20 21 # 设置session 22 @app.route('/set_session') 23 def set_session(): 24 session['username'] = 'steven' # 设置“字典”键值对 25 session['password'] = '123456' 26 session.permanent = True # 设置session的有效时间,长期有效,一个月的时间有效, 27 return 'login success' 28 29 # 获取session 30 @app.route('/get_session') 31 def get_session(): 32 # 第一种session获取如果不存在会报错 33 # session['username'] 34 # 推荐使用session.get('username') 35 # session.get('username') 36 return session.get('password') 37 38 # 删除session 39 @app.route('/delete_session/') 40 def delete_session(): 41 print(session.get('username'), session.pop('username', None)) 42 # 或者 session['username'] = False 43 print(session.get('username')) 44 return "delete session is success" 45 46 47 #清除session中所有数据 48 @app.route('/clear_session') 49 def clear_session(): 50 print(session.get('username')) 51 # 清除session中所有数据 52 session.clear 53 print(session.get('username')) 54 return 'clear session is success' 55 56 #定义了一个方法,用g来获取一个name的值 57 def test_g(): 58 return g.get('name',"no name") 59 60 61 #测试应用上下文g 62 @app.route('/testG') 63 def test(): 64 g.name = '张三' 65 test_g() 66 return test_g() 67 68 #定义了一个提交的form 69 @app.route('/testRequest') 70 def test1(): 71 return '<form action="/getUser" method="get"> ' \ 72 '<input type="text" name="username" value=""> ' \ 73 '<input type="submit" value="提交"> ' \ 74 '</form>' 75 76 #测试请求上下文request 77 @app.route('/getUser',methods=['GET']) 78 def getUser(): 79 username=request.values.get('username') 80 return "my name is "+username 81 82 if __name__ == '__main__': 83 app.run(debug=True)
欢迎关注【无量测试之道】公众号,回复【领取资源】
Python编程学习资源干货、
Python+Appium框架APP的UI自动化、
Python+Selenium框架Web的UI自动化、
Python+Unittest框架API自动化、
资源和代码 免费送啦~
文章下方有公众号二维码,可直接微信扫一扫关注即可。
备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:
添加关注,让我们一起共同成长!