flask命令错误:没有这样的命令[“ create_db”]

我想使用“ flask”命令从终端运行一些命令,但是它不起作用。

以下是我的项目结构-

flaskUserauthentication
├── flaskUserauthentication
│   ├── API
│   │   ├── __init__.py
│   │   ├── db_models.py
│   │   └── routes.py
│   ├── Site
│   │   ├── __init__.py
│   │   ├── routes.py
│   │   ├── static
│   │   │   └── form_style.css
│   │   └── templates
│   │       └── Site
│   │           ├── base_layout.html
│   │           ├── index.html
│   │           ├── logout.html
│   │           ├── profile.html
│   │           ├── signin.html
│   │           └── signup.html
│   ├── __init__.py
│   └── commands.py
├── run.py
└── venv

flask run命令运行该应用程序时,我确定我的环境变量设置正确。但是,当我尝试使用flask-cli命令之类的

flask create_db

我明白了,Error: No such command "create_db".

以下是我的flaskUserauthentication/commands.py文件-

from flaskUserauthentication import app,db
from flaskUserauthentication.API.db_models import Group,Member,Project,Milestone

@app.cli.command('create_db')
def createDatabase():
    db.create_all()
    print('***** Datebase created ****')

#....some more commands

flaskUserauthentication/__init__.py模块(在其中启动flask应用实例的模块)-

from flask import flask
from flask_sqlalchemy import SQLAlchemy

app = flask(__name__)

app.config['SECRET_KEY'] = 'justasamplekey'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
db = SQLAlchemy(app)

from flaskUserauthentication.API.routes import api
from flaskUserauthentication.Site.routes import site

app.register_blueprint(api)
app.register_blueprint(site)
doris331 回答:flask命令错误:没有这样的命令[“ create_db”]

问题是command.py模块未被应用识别。我尝试过的解决方案是在commands模块中启动一个蓝图,然后在启动__init__.py实例的app模块中,向其注册相应的蓝图。因此,更新后的commands.py-

from FlaskUserAuthentication import db
from flask import Blueprint
from FlaskUserAuthentication.API.db_models import Group,Member,Project,Milestone

@cmd = Blueprint('db',__name__) #created a Blueprint for this module

@cmd.cli.command('create_db') #rather than generating the cli command with app,def createDatabase():         # used the blueprint,cmd
    db.create_all()
    print('***** Datebase created ****')

和更新的__init__.py模块

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['SECRET_KEY'] = 'justasamplekey'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
db = SQLAlchemy(app)

from FlaskUserAuthentication.API.routes import api
from FlaskUserAuthentication.Site.routes import site
from FlaskUserAuthentication.commands import cmd

app.register_blueprint(api)
app.register_blueprint(site)
app.register_blueprint(cmd) # registered the command module as blueprint

现在在(终端中)设置环境变量和开发服务器-

export FLASK_APP=FlaskUserAuthentication/__init__.py
export FLASK_DEBUG=1

之后,使用flask命令,例如-

flask db create_db

P.S .:现在是由于蓝图而不是flask create_db,所以命令将是

flask db create_db

我需要意识到问题的根源,为此,我要感谢帖子的作者

Where should I implement flask custom commands (cli)

作者@ emont01对他的回复。

本文链接:https://www.f2er.com/3036503.html

大家都在问