flask command Error: No such command ["create_db"]
flask command Error: No such command ["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-command 时 -
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)
问题是应用无法识别 command.py
模块。我尝试的解决方案是在 commands
模块中启动一个蓝图,然后在我启动 app
实例的 __init__.py
模块中,我向它注册了相应的蓝图。因此,更新后的 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
我需要了解问题的根源,为此我感谢 post-
的作者
Where should I implement flask custom commands (cli)
以及作者 @emont01 对 post 的回应。
我想 运行 使用 '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-command 时 -
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)
问题是应用无法识别 command.py
模块。我尝试的解决方案是在 commands
模块中启动一个蓝图,然后在我启动 app
实例的 __init__.py
模块中,我向它注册了相应的蓝图。因此,更新后的 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
我需要了解问题的根源,为此我感谢 post-
的作者Where should I implement flask custom commands (cli)
以及作者 @emont01 对 post 的回应。