【发布时间】:2019-12-03 18:39:21
【问题描述】:
在flask中创建自定义命令需要访问app,一般在app.py中创建如下:
import click
from flask import Flask
app = Flask(__name__)
@app.cli.command("create-user")
@click.argument("name")
def create_user(name):
...
但是,为了不使我的 app.py 膨胀,我想将我的自定义命令放在一个单独的文件中,例如commands.py,但这不起作用,因为我的项目的入口点是 app.py,所以我必须在 commands.py 中导入应用程序并在 app.py 中导入我的命令,这会导致循环导入错误。
如何在单独的文件中创建自定义命令?
【问题讨论】:
-
我不确定,但你可能需要
with app.app_context():,检查this -
@Roman 是的,但我需要先导入应用程序才能执行
with app.app_context():。所以同样的问题仍然存在。 -
您还可以检查一个较旧的类似问题stackoverflow.com/a/54824126/606826 的响应,简而言之,创建一个工厂函数并将您的应用程序作为参数传递
def register_cli(app: Flask):
标签: python flask command-line-interface python-click flask-cli