Flask 自建扩展

本文介绍了如何创建自定义的Flask扩展,包括扩展分类、如何包装已有的库,如Flask-SQLAlchemy,以及扩展的命名、实现、静态资源加载、前端组件创建、文档编写、单元测试和发布到PyPI的详细步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475

  • 自建扩展介绍

    • Flask扩展分两类
      1. 纯功能, 如: Flask-Login 提供用户认证
      2. 对已有的库和工具包装(简化继承操作,并提供有用的功能,更方便)
        如: Flask-SQLAlchemy 包装了 SQLAlchemy
    • 涉及的 python 包
      1. setuptools
      2. wheel
      3. twine: 发布python 包 (发布到 PyPI 后才能使用 pippipenv 安装)
      4. readme_renderer: 将 mdrsttxt 文本 渲染成.html
    • 命名:
      1. 扩展的名称: Flask-<功能/第三方库名> 或 <功能/第三方库名>-Flask
      2. 扩展的包名: 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,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值