Alan Hou的个人博客

Python Flask 高级编程

Flask的基本原理与核心知识

环境安装

https://github.com/pypa/pipenv

蓝图

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

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

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

参数验证:wtforms

模型:flask-sqlalchemy

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

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

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

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

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

数据库

 

 

退出移动版