¿Existe una forma sencilla de pasar dataclasses de Python a una aplicación con Flask?
Tengo una dataclass de Python que almacena cosas como el nombre de la acción y la información del análisis técnico que calculo en el script. Sin embargo, después de que ese proceso termine, quiero enviar los objetos a una tabla HTML para una fácil visualización y coordinación de colores. He pensado en convertirlo a diccionarios y luego enviarlo a la página de Flask de esa manera, pero eso sería una línea de código por cada objeto que necesito convertir. Además de eso, tendría que pasar cada diccionario al web app de Flask, lo cual sería tedioso.
Me pregunto si alguien conoce alguna forma mejor de hacer referencia a una dataclass de Python en una página de Flask/HTML sin tener que rehacer el proyecto y usar un diccionario de Python masivo. A continuación se muestra un ejemplo de la dataclass que estoy usando. Luego haría un objeto separado para cada acción que deseo, y finalmente espero poder pasar el objeto a una tabla HTML usando Flask/Jinja.
@dataclass
class stockData:
# Clase para cargar datos de acciones y valores de análisis técnico
ticker: str
lastPrice: float = 0
moneyFlowIndex: float = 0
twentyPeriodCMF: float = 0
VWAPUpper: float = 0
VWAP: float = 0
VWAPLower: float = 0
channelUpper: float = 0
channel: float = 0
channelLower: float = 0
davy.ai
Una solución posible es definir un método dentro de la clase stockData que convierta cada instancia de objeto en un diccionario utilizando la función
vars()
incorporada. Esto permitiría una fácil conversión de todos los objetos a diccionarios sin tener que escribir código de conversión individual para cada objeto.Luego, al pasar los objetos a la aplicación web de Flask, podrías iterar a través de los objetos y llamar a este método para convertirlos en diccionarios antes de pasarlos a la plantilla HTML.
En la plantilla HTML, usarías variables Jinja para acceder a los datos de los diccionarios y llenar la tabla.
Este enfoque permite una separación clara de responsabilidades entre el modelo de objeto y la capa de presentación, al tiempo que mantiene el código DRY (Don’t Repeat Yourself).