Estoy trabajando en un proyecto de evaluación de acciones usando Django, Pandas y Plotly. Una de las páginas es la lista de observación del usuario donde se muestran ciertas estadísticas para cada acción (una fila de tabla HTML por acción). Esta tabla HTML se genera en la vista de "lista de observación" al convertir un DataFrame de Pandas en html usando el método "to_html" (con escape=False).
Cada fila de la tabla HTML tiene un botón "Ver gráfico" que abre un gráfico Plotly interactivo para la acción relevante. El gráfico se genera en función de los resultados de los cálculos realizados en la vista de "lista de seguimiento" y se representa mediante una cadena html que se envía a la plantilla de "lista de seguimiento" como parte del contexto.
En este momento, estoy cargando todos los gráficos de stock debajo de la tabla HTML cada vez que se carga la página de "lista de seguimiento", pero inicialmente los gráficos permanecen ocultos con css. Cada gráfico tiene una identificación en el conjunto de datos que me permite "mostrar" con JavaScript cuando alguien hace clic en el botón correspondiente con la misma identificación en la tabla.
Sin embargo, cargar todos los gráficos a la vez cuando se carga la página de "lista de seguimiento" lleva mucho tiempo, y estoy tratando de pensar en una solución que acelere el proceso y que sea arquitectónicamente óptima. El número de acciones (y gráficos coincidentes) en la lista de seguimiento de un usuario puede ser de 50 a 100.
Tengo entendido que las opciones potenciales son:
cree una plantilla de "gráfico" y una vista, y luego use cada botón "Ver gráfico" para dirigir al usuario a la plantilla de "gráfico" que mostraría el gráfico relevante. Sin embargo, no estoy seguro de si es posible pasar un gráfico representado como una cadena html a la vista "gráfico".
cree un archivo HTML separado para cada gráfico en el momento en que se realizan los cálculos en la vista de "lista de seguimiento", luego vincule cada botón "Ver gráfico" al archivo HTML correspondiente. Sin embargo, no estoy seguro de dónde deben ir estos archivos HTML (especialmente después de la implementación) y cómo podría limpiarlos regularmente (ya que cada gráfico solo se necesitaría una vez).
cargue cada gráfico en la página "lista de seguimiento" de forma asincrónica cuando se haga clic en el botón "Ver gráfico" correspondiente (en lugar de cargar todos los gráficos a la vez cuando la página se carga inicialmente). Estoy usando Vanilla JavaScript para la interfaz del proyecto y me preguntaba si esto se puede implementar sin introducir React, JQuery, etc.
Me disculpo si hay una solución obvia aquí, pero no he trabajado con Django por mucho tiempo, y agradecería consejos sobre cómo manejar esto antes de ir por la madriguera del conejo de aprender nuevas herramientas que pueden o no ser óptimas para esto. caso particular.
¡Muchas gracias!
Bueno, puede cargar la página de la lista de seguimiento sin cargar los gráficos inicialmente y luego enviar una solicitud de obtención para obtener un gráfico específico cada vez que el usuario haga clic en el botón para mostrar el gráfico. Esto se puede lograr a través de htmx y tiene un paquete dedicado para django llamado django-htmx . Lea sus documentos.