注册动态蓝图

时间:2017-09-04 09:54:49

标签: python flask

是否可以通过dinamically注册蓝图?

这是结构:

project
     |---app
     |     |
     |     |-------- plugin
     |     |             |
     |     |             |--- __init__.py
     |     |             |--- views.py
     |     |             |--- template
     |     |             |          |
     |     |             |          |-- plugin.html
     |     |             |--- functions.py
     |     |             |--- models.py 
     |     |
     |     |-------- plugin2
     |     |             |-- ....
     |     |
     |     |-------- __init__.py 
     | 
     |--------manage.py

插件是蓝图:

plugin = Blueprint('plugin', __name__, template_folder='template')

在app / init .py

def create_app(config_name):
   app = Flask(__name__, instance_relative_config=True)
   app.config.from_object(app_config[config_name])
   app.config.from_pyfile('config.py')

   # HERE THE IMPORTS
   from app.plugin import models
   from .plugin import plugin
   app.register_blueprint(plugin)

有没有办法自动导入这些蓝图?

由于

1 个答案:

答案 0 :(得分:0)

这是您实现这一目标的方法

import importlib

SERVICES = [
    {'path': '.plugin.views', 'blueprint': 'plugin'}, 
    {'path': '.plugin2.views', 'blueprint': 'plugin2'}
]

for service in SERVICES:
    module = importlib.import_module(service['path'], package='app')
    app.register_blueprint(getattr(module, service['blueprint']))