64.Flask框架的优势?
Flask自由、灵活,可扩展性强,透明可控,第三方库的选择面广,
开发时可以结合最流行最强大的Python库,
65.Flask框架依赖组件?
#依赖jinja2模板引擎
#依赖werkzurg协议
66.Flask蓝图的作用?
#blueprint把实现不同功能的module分开.也就是把一个大的App分割成各自实现不同功能的module.
#在一个blueprint中可以调用另一个blueprint的视图函数, 但要加相应的blueprint名.
67.列举使用过的Flask第三方组件?
#Flask组件
flask-session session放在redis
flask-SQLAlchemy 如django里的ORM操作
flask-migrate 数据库迁移
flask-script 自定义命令,写脚本。类似于python manager.py runserver
blinker 信号-触发信号
#第三方组件
Wtforms 快速创建前端标签、文本校验
dbutile 创建数据库连接池
gevnet-websocket 实现websocket
#自定义Flask组件
自定义auth认证
参考flask-login组件
68.简述Flask上下文管理流程?
#a、简单来说,falsk上下文管理可以分为三个阶段:
1、‘请求进来时’:将请求相关的数据放入上下问管理中
2、‘在视图函数中’:要去上下文管理中取值
3、‘请求响应’:要将上下文管理中的数据清除
#b、详细点来说:
1、‘请求刚进来’:
将request,session封装在RequestContext类中
app,g封装在AppContext类中
并通过LocalStack将requestcontext和appcontext放入Local类中
2、‘视图函数中’:
通过localproxy—>偏函数—>localstack—>local取值
3、‘请求响应时’:
先执行save.session()再各自执行pop(),将local中的数据清除
①为什么要有localproxy?
request = LocalProxy(partial(_lookup_req_object, ‘request’))
localproxy帮助我们使用:request.method
如果没有:
request =partial(_lookup_req_object, ‘request’)
Request().method要加括号
②local对象
{ 唯一标识: {
Stack: [] 可以是列表
}
}
web应用:stack可以是单值,列表