Introdução
Neste laboratório, você aprenderá como lidar com a configuração em uma aplicação Flask. A configuração permite que você altere as configurações em sua aplicação com base em diferentes ambientes, como alternar o modo de depuração (debug mode), definir chaves secretas e outras variáveis específicas do ambiente.
Nota: Você precisa criar o arquivo de código você mesmo e executá-lo no ambiente. Você pode visualizar o status do serviço Flask na Web 5000.
Criar uma Aplicação Flask
Primeiramente, vamos criar uma aplicação Flask básica. Crie um arquivo chamado app.py e adicione o seguinte código:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello, Flask!'
Para executar a aplicação, execute o seguinte comando no seu terminal:
python app.py
Abra seu navegador web e visite http://localhost:5000 para ver a mensagem "Hello, Flask!".
Configuração Básica
Agora, vamos adicionar alguma configuração básica à nossa aplicação Flask. No mesmo arquivo app.py, adicione o seguinte código:
app.config['DEBUG'] = True
app.config['SECRET_KEY'] = 'mysecretkey'
A configuração DEBUG habilita o modo de depuração (debug mode), que fornece mensagens de erro úteis durante o desenvolvimento. A configuração SECRET_KEY é usada para assinar com segurança os cookies de sessão e outras necessidades relacionadas à segurança.
Para acessar os valores da configuração, você pode usar o dicionário app.config. Por exemplo, para imprimir o valor da SECRET_KEY, adicione o seguinte código à rota hello:
@app.route('/')
def hello():
secret_key = app.config['SECRET_KEY']
return f'Hello, Flask! Secret Key: {secret_key}'
Reinicie a aplicação Flask e visite http://localhost:5000 para ver a mensagem atualizada com a chave secreta.
Configuração de Arquivos
Codificar os valores de configuração diretamente no código não é ideal, especialmente para informações sensíveis. Flask oferece uma maneira de carregar a configuração de arquivos separados. Crie um novo arquivo chamado config.py e adicione o seguinte código:
DEBUG = False
SECRET_KEY = 'myothersecretkey'
No arquivo app.py, substitua o código de configuração anterior pelo seguinte:
app.config.from_object('config')
O método from_object carrega a configuração do módulo config. Agora, os valores DEBUG e SECRET_KEY serão carregados do arquivo config.py.
Reinicie a aplicação Flask e visite http://localhost:5000 para ver a mensagem atualizada com os novos valores de configuração.
Configuração Baseada em Ambiente
É comum ter diferentes configurações para diferentes ambientes, como desenvolvimento, produção e testes. Flask permite que você alterne as configurações com base em variáveis de ambiente. Crie um novo arquivo chamado config_dev.py e adicione o seguinte código:
DEBUG = True
SECRET_KEY = 'devsecretkey'
Crie outro arquivo chamado config_prod.py com o seguinte código:
DEBUG = False
SECRET_KEY = 'prodsecretkey'
No arquivo app.py, substitua o código de configuração anterior pelo seguinte:
import os
if os.environ.get('FLASK_ENV') == 'production':
app.config.from_object('config_prod')
else:
app.config.from_object('config_dev')
A variável de ambiente FLASK_ENV é usada para determinar o ambiente. Se estiver definida como 'production', a configuração de produção será carregada; caso contrário, a configuração de desenvolvimento será carregada.
Defina a variável de ambiente FLASK_ENV como 'production' e reinicie a aplicação Flask. Visite http://localhost:5000 para ver a mensagem atualizada com os valores da configuração de produção.
Pasta de Instância
Flask fornece uma pasta de instância para armazenar arquivos de configuração que são específicos para uma implantação particular. Isso permite que você separe as configurações específicas da implantação do restante do seu código. Por padrão, Flask usa uma pasta chamada instance no mesmo diretório da sua aplicação.
Crie uma nova pasta chamada instance no mesmo diretório do seu arquivo app.py. Na pasta instance, crie um arquivo chamado config.cfg e adicione o seguinte código:
DEBUG = True
SECRET_KEY = 'instancekey'
No arquivo app.py, adicione o seguinte código antes do código de configuração:
app.instance_path = os.path.abspath(os.path.dirname(__file__))
app.config.from_pyfile('config.cfg')
O instance_path é definido para o caminho absoluto da pasta instance. O método from_pyfile carrega a configuração do arquivo config.cfg na pasta de instância.
Reinicie a aplicação Flask e visite http://localhost:5000 para ver a mensagem atualizada com os valores da configuração da instância.
Resumo
Neste laboratório, você aprendeu como lidar com a configuração em uma aplicação Flask. Você aprendeu como definir valores básicos de configuração, carregar a configuração de arquivos, alternar configurações com base em variáveis de ambiente e usar uma pasta de instância para configurações específicas da implantação. A configuração é um aspecto importante da construção de aplicações Flask robustas e flexíveis.