Python微信订餐小程序课程视频
https://edu.csdn.net/course/detail/36074
Python实战量化交易理财系统
https://edu.csdn.net/course/detail/35475
-
自建扩展介绍
- Flask扩展分两类
- 纯功能, 如: Flask-Login 提供用户认证
- 对已有的库和工具包装(简化继承操作,并提供有用的功能,更方便)
如: Flask-SQLAlchemy 包装了 SQLAlchemy
- 涉及的 python 包
setuptools
:wheel
:twine
: 发布python
包 (发布到PyPI
后才能使用pip
或pipenv
安装)readme_renderer
: 将md
、rst
、txt
文本 渲染成.html
- 命名:
- 扩展的名称: Flask-<功能/第三方库名> 或 <功能/第三方库名>-Flask
- 扩展的包名: flask_<功能/第三方库名> (小写加下划线)
- Flask扩展分两类
-
扩展类实现
- 编写扩展类(以 Flask-Share 为例)
- 使用扩展步骤: 导入扩展类 - 实例化 - 传入 app 初始化
from flask_share import Share share = Share() # extensions.py 中统一实例化所有扩展 share.init_app(app) # 在工厂函数中统一初始化所有扩展 # 也可以一步到位 # share = share(app)
- 新建扩展类 (
flask_share/__init__.py
)
class Share(object): def \_\_inti\_\_(self, app=None): self.init_app(app) def init\_app(self, app): # 兼容 0.7 以前版本 if not hasattr(app, 'extensions'): app.extensions={} # 在 app 应用中存储所有扩展实例, 可验证扩展是否完成实例化 app.extensions['share'] = self # 扩展类添加到模板上下文中 app.jinja_env.globals['share'] = self # app.context\_processor(lambda:{'share': self}) # 扩展配置, 初始化后添加到 app.config 中, 以 SHARE\_ 开头避免冲突 app.config.setdefault('SHARE\_SITES', 'weibo,wechat,douban,facebook,twitter,google,linkedin,qq,qzone') app.config.setdefault('SHARE\_MOBILESIT
- 编写扩展类(以 Flask-Share 为例)