Nesse artigo, iremos explorar o CLI do micro-framework flask. Para quem não conhece, o flask é um framework web, está para o python assim como o express está para o node.
Entendendo o CLI...
- Ao instalar do Flask, automaticamente, será instalado uma interface de linha de comando Click, em seu virtualenv (ambiente virtual);
- Click é um pacote feito para criar comandos personalizados para sua aplicação Flask escrevendo o minimo possivel.
Semelhante aos comandos que o framework django possui para criar super-usuarios, criar apps, etc. o Click possibilita fazermos isso e o melhor é que podemos ir além e criar nossos proprios comandos, agilizando o desenvolvimento de nossos projetos.
Dependencias
- Virtualenv
- Flask
OBS: Irei partir da premissa de que você ja esta familiarizado com a configuração do ambiente e instalação das dependencias.
Sua estrutura de pastas deve ficar parecida com a minha:
Dentro do arquivo __ init __.py escreva o codigo da seguinte forma:
# flask imports
from flask import Flask
def create_app():
'''
Função para criar um aplicativo Flask
'''
# Instanciando a o objeto Flask()
app = Flask(__name__)
# retornando o objeto app
return app
Agora, dentro do arquivo settings.py iremos criar o nosso comando. O mesmo será responsável por criar apps em nossa aplicação, sem precisarmos criar arquivo por arquivo.
Contextualizando...
Como flask é um micro-framework, o mesmo vem apenas com o basico para criarmos uma aplicação web, dessa forma, não temos tantas ferramentas prontas, como o django, por exemplo. No django, ao executarmos o comando django-admin startapp criamos uma app dentro do diretorio em que você esta, contendo dentro dessa app os arquivos necessários para que possamos trabalhar, agilizando o processo de criação de nossa aplicação.
Dito isso, iremos fazer algo parecido para nossa aplicação flask, sem muita complexidade e de forma intuitiva, para que vocês possam ver como funciona o CLI do Flask.
Dessa forma, dentro do arquivo settings.py, iremos inserir o seguinte codigo:
# python imports
import os
import subprocess
# flask imports
import click
from flask import request, Blueprint
# Registrando blueprint
bp_settings = Blueprint('settings', __name__)
@bp_settings.cli.command("startapp")
@click.argument("name")
def create_folder_app(name):
'''
Essa função cria uma app dentro
do projeto, ja com os arquivos
necessarios para trabalhar.
Exemplo: flask startapp <nome_da_app>
Dentro da pasta contém os arquivos:
- '__init__.py' -> arquivo __init__.py
dentro de um subdiretório será sempre o
primeiro a ser executado quando um módulo
dentro deste subdiretório for chamado;
- 'views.py' -> arquivo responsavel por
conter a logica de cada app;
- 'models.py' -> arquivo que contém uma classe
que abstrai em modelo uma tabela do banco de dados;
- 'forms.py' -> arquivo que pode ser usado
para abstrair os forms HTML, utilizando a
lib Flask-WTForms.
Foi utilizado a função click do
flask, responsável por criar
comandos e argumentos para a
aplicação.
'''
# Atribuindo o argumento recebido
# na variavel "name"
name=name
try:
# Acessando a pasta 'app'
here = os.path.dirname(os.path.dirname(__file__))
# Setando o caminho e o nome
# dos arquivos que serão criados
filepath_init = os.path.join(here, f'{name}', '__init__.py')
filepath_views = os.path.join(here, f'{name}', 'views.py')
filepath_models = os.path.join(here, f'{name}', 'models.py')
filepath_forms = os.path.join(here, f'{name}', 'forms.py')
# Criando pasta
os.mkdir(os.path.join(here, f'{name}'))
try:
# Criando os arquivos
f = open(filepath_init, 'w')
f = open(filepath_views, 'w')
f = open(filepath_models, 'w')
f = open(filepath_forms, 'w')
print('App criada com sucesso')
except IOError as e:
print(e)
except IsADirectoryError as e:
print(e)
Resumidamente, o codigo acima cria uma app dentro da pasta app do projeto, contendo os arquivos comumente usados, sendo eles, __ init __.py, views.py, models.py, forms.py.
Agora, vamos voltar para nosso arquivo __ init __.py e adicionar o seguinte trecho de código:
# flask custom commands
with app.app_context():
from .settings import create_folder_app
app.cli.add_command(create_folder_app)
O arquivo __ init __.py completo ficará assim:
# flask imports
from flask import Flask
def create_app():
'''
Função para criar um aplicativo Flask
'''
# Instanciando a o objeto Flask()
app = Flask(__name__)
# flask custom commands
with app.app_context():
from .settings import create_folder_app
app.cli.add_command(create_folder_app)
# retornando o objeto app
return app
Agora, vamos exportar nossas variaveis de ambiente, para que a aplicação flask funcione corretamente. Siga os passos:
- Em seu terminal, dentro da pasta projeto, digite consecutivamente:
export FLASK_APP=project
export FLASK_ENV=Development
export FLASK_DEBUG=True
Feito isso, ja podemos executar o seguinte comando no terminal, para, de fato, utilizarmos nosso comando:
flask startapp projeto/usuarios
O comando acima irá criar nossa app dentro da pasta projeto.
Após executar o mesmo, a seguinte ordenação de pasta será criada:
Pronto, agora ja conseguimos agilizar um de nossos procedimentos diarios no desenvolvimento de uma aplicação flask.
Considerações finais
O intuito desse artigo foi mostrar a liberdade que temos com o flask e o quanto o mesmo é expansível a modo de facilitar a nossa vida no dia a dia.
Top comments (0)