Introdução
O tutorial Python Flask "Trabalhando com o Shell" fornece orientação sobre o uso do shell interativo no Flask para executar comandos Python em tempo real. Este tutorial explica como criar um contexto de requisição, disparar funções before/after request e melhorar a experiência do shell.
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.
Iniciando o Shell
Para iniciar o shell, use o comando flask shell, que inicializa automaticamente o shell com um contexto de aplicação carregado.
Interface de Linha de Comando (Command Line Interface):
flask shell
Criando um Contexto de Requisição
Para criar um contexto de requisição adequado no shell, use o método test_request_context(), que cria um objeto RequestContext. No shell, faça o push e o pop manualmente do contexto de requisição usando os métodos push() e pop().
## File: shell.py
## Execution: python shell.py
from flask import Flask
app = Flask(__name__)
## Create a request context
ctx = app.test_request_context()
## Push the request context
ctx.push()
## Work with the request object
## Pop the request context
ctx.pop()
Disparando Funções Before/After Request
Ao criar um contexto de requisição, o código que normalmente é executado antes de uma requisição não é acionado. Para simular a funcionalidade before-request, chame o método preprocess_request(). Isso garante que as conexões com o banco de dados e outros recursos estejam disponíveis.
## File: shell.py
## Execution: python shell.py
from flask import Flask
app = Flask(__name__)
## Create a request context
ctx = app.test_request_context()
ctx.push()
## Simulate the before-request functionality
app.preprocess_request()
## Work with the request object
## Pop the request context
ctx.pop()
Para simular a funcionalidade after-request, chame o método process_response() com um objeto de resposta fictício antes de fazer o pop do contexto de requisição.
## File: shell.py
## Execution: python shell.py
from flask import Flask
app = Flask(__name__)
## Create a request context
ctx = app.test_request_context()
ctx.push()
## Simulate the before-request functionality
app.preprocess_request()
## Work with the request object
## Simulate the after-request functionality
app.process_response(app.response_class())
## Pop the request context
ctx.pop()
Melhorando a Experiência no Shell
Para melhorar a experiência no shell, crie um módulo (shelltools.py) com métodos auxiliares que podem ser importados para a sessão interativa. Este módulo pode conter métodos auxiliares adicionais para tarefas como inicializar o banco de dados ou remover tabelas.
## File: shelltools.py
def initialize_database():
## Code to initialize the database
pass
def drop_tables():
## Code to drop tables
pass
No shell interativo, importe os métodos desejados do módulo shelltools.
## File: shell.py
## Execution: python shell.py
from shelltools import initialize_database, drop_tables
## Import desired methods from shelltools module
from shelltools import *
## Use imported methods
initialize_database()
drop_tables()
Resumo
O tutorial "Trabalhando com o Shell" fornece instruções passo a passo para usar o shell interativo no Flask. Ele explica como criar um contexto de requisição, disparar funções before/after request e melhorar a experiência no shell importando métodos auxiliares de um módulo separado.