Flask CLI permite crear comandos personalizados para poder realizar cualquier operación; estos comandos se ejecutan en el contexto de la aplicación; para instalar el paquete, tenemos:
$ pip install flask-cli
Registramos a nivel de la app:
my_app\__init__.py
from flask_cli import FlaskCLI
***
FlaskCLI(app)
Su uso es muy sencillo y el proceso es realizado en base a funciones:
my_app\comands\user.py
def register(app):
@app.cli.command('mycmd')
def mycmd():
click.echo("Test")
Por lo tanto, un comando corresponde a una función que puede tener los siguientes decoradores:
- @app.cli.command registra que nuestra función tiene un nuevo comando de línea de comandos; si no se pasa ningún argumento, Click asumirá el nombre de la función.
- @click.argument agrega un argumento de línea de comando; en nuestro caso, para nombre de usuario y contraseña.
Con el funcionamiento aclarado, creamos una nueva función (comando) para crear un usuario:
my_app\comands\user.py
def register(app):
@app.cli.command('create-user')
@click.argument('username')
@click.argument('password')
def create_user(username, password):
existing_username = User.query.filter_by(username=username).first()
if existing_username:
click.echo( 'This username has been already taken. Try another one.')
user = User(username, password)
db.session.add(user)
db.session.commit()
click.echo('User {0} Added.'.format(username))
@app.cli.command('mycmd')
def mycmd():
click.echo("Test")
Registramos a nivel de la app:
my_app\__init__.py
from flask_cli import FlaskCLI
***
# extensions
from my_app.comands.user import register
register(app)
Es importante que registres la aplicación mediante la variable de entorno FLASK_APP o que puedas usar comandos como:
$ flask run
Para ejecutar el proyecto, de tal forma que de esta manera se tiene acceso al contexto de la aplicación y con esto la posibilidad de ejecutar los comandos personalizados.
Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter