您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

将Flask的Click CLI与应用程序工厂模式一起使用

将Flask的Click CLI与应用程序工厂模式一起使用

flask命令是使用创建的Click界面flask.cli.FlaskGroup。创建您自己的组并将其传递给工厂功能。使用app.shell_context_processor对象添加到外壳。

from flask import Flask
from flask.cli import FlaskGroup
from flask_sqlalchemy import sqlAlchemy

db = sqlAlchemy()

def create_app(script_info=None):
    app = Flask(__name__)
    db.init_app(app)
    ...

    @app.shell_context_processor
    def shell_context():
        return {'app': app, 'db': db}

    return app

cli = FlaskGroup(create_app=create_app)

@cli.command
def custom_command():
    pass

if __name__ == '__main__':
    cli()

运行文件而不是flask命令。您将使用工厂获得Click界面。

FLASK_DEBUG=1 python app.py run

理想情况下,创建一个入口点并将软件包安装在环境中。然后,您可以将脚本作为命令来调用setup.py至少使用以下内容创建一个文件

project/
    app/
        __init__.py
    setup.py



from setuptools import setup, find_packages

setup(
    name='my_app',
    version='1.0.0',
    packages=find_packages(),
    entry_points={
        'console_scripts': [
            'app=app:cli',
        ],
    },
)



pip install -e /path/to/project
FLASK_DEBUG=1 app run

与内置flask命令相比,使用自己的CLI的鲁棒性较弱。因为您的cli对象是用其他代码定义的,所以模块级错误将导致重新加载器失败,因为它无法再导入该对象。该flask命令与您的项目分开,因此不受模块错误的影响。

Python 2022/1/1 18:46:48 有332人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶