Python Flask 高级编程

Python Alan 5年前 (2019-03-09) 5523次浏览 0个评论 扫描二维码

Flask的基本原理与核心知识

环境安装

https://github.com/pypa/pipenv

蓝图

解决分割视图函数后循环导入的问题:

  • 实例化核心对象 app -> 插入blueprint
  • blueprint -> 插入视图函数、还可包含静态文件夹和模板文件夹

蓝图放在每个包的__init__.py 中进行注册,然后各文件进行导入

然后在 主 app 目录下的__init__.py 上进行注册:

参数验证:wtforms

模型:flask-sqlalchemy

Flask 经典错误:RuntimeError: Working outside of application context.

4个核心对象:Flask和AppContext应用上下文、Request和RequestContext请求上下文

这一问题通常出现在单元测试和离线应用中,因为视图函数的请求中 Flask 会替你处理上下文的问题,出现的原因为current_app指向栈顶元素,而由于栈顶为空无法获取到上下文,解决方法是获取应用上下文并压入栈

自己推入应用上下文的主要应用场景为离线应用和单元测试

Python Flask 高级编程

Ctrl/Cmd+Alt/Option+左/右方向键返回上下层或进入下一层源代码

SQLAlchemy中解决 app上下文的问题:

RuntimeError: No application found. Either work inside a view function or push an application context.

线程

多线程可以充分的利用 CPU 的性能优势,Python GIL 全局解释器锁,对于 CPU 密集型程序多线程鸡肋,对于 IO 密集型程序 Python 的多线程则有意义

Flask 使用 Werkzeug 的 Local 和 LocalStack来实现线程隔离

对象序列化

Jinja2

数据库

 

 

喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址