Flask CLI to create custom commands

- Andrés Cruz

En español

Flask CLI to create custom commands

Flask CLI allows you to create custom commands to perform any operation; these commands are executed in the context of the application; to install the package, we have:

$ pip install flask-cli

We register at the app level:

my_app\__init__.py

from flask_cli import FlaskCLI
***
FlaskCLI(app)

Its use is very simple and the process is carried out based on functions:

my_app\comands\user.py

def register(app):
    @app.cli.command('mycmd')
    def mycmd():
        click.echo("Test")

Therefore, a command corresponds to a function that can have the following decorators:

  • @app.cli.command registers that our function has a new command line command; if no arguments are passed, Click will assume the function name.
  • @click.argument adds a command line argument; in our case, for username and password.

With the operation clarified, we create a new function (command) to create a user:

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")

We register at the app level:

my_app\__init__.py

from flask_cli import FlaskCLI
***
# extensions
from my_app.comands.user import register
register(app)

It is important that you register the application using the FLASK_APP environment variable or that you can use commands such as:

$ flask run

To execute the project, in such a way that in this way you have access to the context of the application and with this the possibility of executing custom commands.

I agree to receive announcements of interest about this Blog.

Flask CLI allows you to create custom commands to perform any operation; these commands are executed in the context of the application.

- Andrés Cruz

En español