Trabajando con la shell

FlaskFlaskBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

El tutorial de Python Flask "Trabajando con la shell" ofrece orientación sobre cómo usar la shell interactiva en Flask para ejecutar comandos de Python en tiempo real. Este tutorial explica cómo crear un contexto de solicitud, activar funciones antes/después de la solicitud y mejorar la experiencia de la shell.

Nota: Debes crear el archivo de código por ti mismo y ejecutarlo en el entorno. Puedes previsualizar el estado del servicio Flask en el Web 5000.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL flask(("Flask")) -.-> flask/DataHandlingGroup(["Data Handling"]) flask(("Flask")) -.-> flask/CoreConceptsGroup(["Core Concepts"]) flask(("Flask")) -.-> flask/DevelopmentToolsGroup(["Development Tools"]) flask/DataHandlingGroup -.-> flask/incoming_request_data("Incoming Request Data") flask/DataHandlingGroup -.-> flask/application_globals("Application Globals") flask/DataHandlingGroup -.-> flask/response_objects("Response Objects") flask/CoreConceptsGroup -.-> flask/application_object("Application Object") flask/CoreConceptsGroup -.-> flask/session_interface("Session Interface") flask/CoreConceptsGroup -.-> flask/json_support("JSON Support") flask/CoreConceptsGroup -.-> flask/class_based_views("Class-Based Views") flask/CoreConceptsGroup -.-> flask/useful_internals("Useful Internals") flask/DevelopmentToolsGroup -.-> flask/command_line_interface("Command Line Interface") subgraph Lab Skills flask/incoming_request_data -.-> lab-136111{{"Trabajando con la shell"}} flask/application_globals -.-> lab-136111{{"Trabajando con la shell"}} flask/response_objects -.-> lab-136111{{"Trabajando con la shell"}} flask/application_object -.-> lab-136111{{"Trabajando con la shell"}} flask/session_interface -.-> lab-136111{{"Trabajando con la shell"}} flask/json_support -.-> lab-136111{{"Trabajando con la shell"}} flask/class_based_views -.-> lab-136111{{"Trabajando con la shell"}} flask/useful_internals -.-> lab-136111{{"Trabajando con la shell"}} flask/command_line_interface -.-> lab-136111{{"Trabajando con la shell"}} end

Iniciando la shell

Para iniciar la shell, utiliza el comando flask shell, que inicializa automáticamente la shell con un contexto de aplicación cargado.

Interfaz de línea de comandos:

flask shell

Creando un contexto de solicitud

Para crear un contexto de solicitud adecuado en la shell, utiliza el método test_request_context(), que crea un objeto RequestContext. En la shell, empuja y quita manualmente el contexto de solicitud utilizando los métodos push() y pop().

## Archivo: shell.py
## Ejecución: python shell.py

from flask import Flask

app = Flask(__name__)

## Crea un contexto de solicitud
ctx = app.test_request_context()

## Empuja el contexto de solicitud
ctx.push()

## Trabaja con el objeto de solicitud

## Quita el contexto de solicitud
ctx.pop()

Activando funciones antes/demás de la solicitud

Al crear un contexto de solicitud, el código que normalmente se ejecuta antes de una solicitud no se activa. Para simular la funcionalidad antes de la solicitud, llama al método preprocess_request(). Esto garantiza que las conexiones a la base de datos y otros recursos estén disponibles.

## Archivo: shell.py
## Ejecución: python shell.py

from flask import Flask

app = Flask(__name__)

## Crea un contexto de solicitud
ctx = app.test_request_context()
ctx.push()

## Simula la funcionalidad antes de la solicitud
app.preprocess_request()

## Trabaja con el objeto de solicitud

## Quita el contexto de solicitud
ctx.pop()

Para simular la funcionalidad después de la solicitud, llama al método process_response() con un objeto de respuesta ficticio antes de quitar el contexto de solicitud.

## Archivo: shell.py
## Ejecución: python shell.py

from flask import Flask

app = Flask(__name__)

## Crea un contexto de solicitud
ctx = app.test_request_context()
ctx.push()

## Simula la funcionalidad antes de la solicitud
app.preprocess_request()

## Trabaja con el objeto de solicitud

## Simula la funcionalidad después de la solicitud
app.process_response(app.response_class())

## Quita el contexto de solicitud
ctx.pop()

Mejora la experiencia de la shell

Para mejorar la experiencia de la shell, crea un módulo (shelltools.py) con métodos auxiliares que se pueden importar en la sesión interactiva. Este módulo puede contener métodos auxiliares adicionales para tareas como la inicialización de la base de datos o la eliminación de tablas.

## Archivo: shelltools.py

def initialize_database():
    ## Código para inicializar la base de datos
    pass

def drop_tables():
    ## Código para eliminar tablas
    pass

En la shell interactiva, importa los métodos deseados del módulo shelltools.

## Archivo: shell.py
## Ejecución: python shell.py

from shelltools import initialize_database, drop_tables

## Importa los métodos deseados del módulo shelltools
from shelltools import *

## Utiliza los métodos importados
initialize_database()
drop_tables()

Resumen

El tutorial "Trabajando con la shell" proporciona instrucciones detalladas para utilizar la shell interactiva en Flask. Explica cómo crear un contexto de solicitud, activar funciones antes/demás de la solicitud y mejorar la experiencia de la shell importando métodos auxiliares de un módulo separado.