通过import_string批量导入蓝图

条件:

蓝图对象的名字与模块文件夹的名字相同,在app目录下方,例如:

app
    -auth
    -admin
    ...
    
在auth模块中的__init__中创建auth模块的蓝图对象,蓝图名称auth
admin等其他模块格式与auth相同
def create_app(config_name):
    # 参加Flask应用程序实例
    app = Flask(__name__)
    # 导入配置参数
    config_mode = config[config_name]
    app.config.from_object(config_mode)
    mail.init_app(app)
    
    
    filenames = os.listdir("app")
    # 利用os模块找到蓝图对象所在的路径
    for filename in filenames:
        if os.path.isdir("app/"+filename) and os.path.exists('app/'+filename+'/__init__.py'):
            bp = import_string('app.'+filename+':'+filename)
            app.register_blueprint(bp)
    print(app.url_map)
    print(app.config.get("NAME"))
    return app

import_string(import_name, silent=False)

  • import_name:要导入的对象的模块或对象名称
  • silent:如果设置为True,则忽略导入错误,相反则返回None
import_name 格式一般为:
'app.auth:auth'
silent参数可以省略
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,645评论 19 139
  • Scala与Java的关系 Scala与Java的关系是非常紧密的!! 因为Scala是基于Java虚拟机,也就是...
    灯火gg阅读 8,827评论 1 24
  • 32K水彩纸,天空画的太烂了。。
    柚柚宝贝阅读 1,631评论 0 1
  • 每次有很多话想说,却总是难于开头。想要写些什么,又不知如何下笔,一直希望自己能有所作为,却又一直碌碌无为。小时候爷...
    蟹老板奇奇阅读 1,274评论 1 2
  • 一组砂锅品牌来袭,希望同行们多多交流指点。 转载自:站酷CHANGxy宇 餐饮品牌设计,选择懿木。 www.emu...
    懿木智库阅读 1,495评论 0 0