装饰器?应用场景?、
在不改变函数内部代码的前提下,在它之前之上做些其他动作
应用:
flask路由、before_request、登录限制
django:csrf、缓存、用户登录
蓝图
用作目录结构管理,可以加URL前缀,在某一个蓝图里面加入before_request
session
flask: 请求刚进来,去cookie获取原来的session,没有就是空 ,把cookie拿到转换成特殊的字典,放在某个地方,谁要就去拿 (先把他放在某个地去取)django:(一直传递)
django/flask框架的认识:
django:大而全,包含很多组件如:admin,form
flask:短小精悍,可扩展强,很多组件如:wtforms、 SQLAchemy\flask-sqlachemy、flask-script、flask-migrate
相同点:都基于wsgi (一个协议,一套http协议规范 ),没有自己的socke
不同点:请求方式不一样,django相关数据通过参数传递,flask基于上下文管理来做
上下文管理:
请求上下文:request、session
App上下文:app、g
什么是g:
一次请求周期内的全局变量,只在一个周期内有效
上下文管理器:
请求进来实例化RequestContext()对象,在实例化的过程中 已经把路由匹配做完了,把request和session以及路由匹配封装到RequestContext()对象里面,基于LocalStack把他放到Local里面,这是请求上下文,还有一个App请求上下文,他是基于APPContext()对象把app和g通过自己的LocalStack放到Local里面
视图处理阶段使用LocalProxy调用偏函数,偏函数调用LocalStack到Local里面取值
请求结束,保存session,调用LocalStack.pop()把Local里面的东西删掉
Local是什么它的作用?
用于保存请求上下文对象以及app上下文对象
特殊作用:在保存时可以做到 “线程” 间的数据隔离
LocalStack是什么它的作用?
将Local中保存的数据维护成一个栈 栈特点:先进后出
Flask内置功能
路由、配置、视图、模板、session、蓝图、闪现、装饰器、中间件
flask组件
flask_session、flask-sqlalchemy、flask-migrate、flask-script
第三方组件
、DBUtils(数据连接池)、wtforms、sqlalchemy