Estoy trabajando en un proyecto y estoy tratando de asegurarme de que lo que estoy haciendo tenga sentido conceptualmente o si hay alguna otra forma de hacerlo. Lo que sea que estoy intentando no está funcionando. Antecedentes: soy bueno con Python y no sé prácticamente nada de JavaScript, pero me estoy confundiendo.
Estoy creando una aplicación Flask que tomará y enviará información sobre los tamaños de un formulario, la procesará usando Python y mostrará los resultados en la misma página. Tengo eso funcionando. Quería agregar campos dinámicos, para que un usuario pueda hacer clic para agregar otro tamaño. También lo hice funcionar, y puedo ver en el resultado de la página que la función en Python está funcionando con esta entrada adicional.
Aquí está el problema: cuando hago clic en enviar, la página se vuelve a cargar y los campos dinámicos desaparecen, aunque los resultados aún se muestran a continuación. Esto es más o menos un problema de UX: si alguien cometió un error tipográfico la primera vez, tendría que regresar y agregar todos los campos e ingresar toda la información nuevamente. Además, no podrían ver lo que agregaron originalmente.
He leído publicaciones sobre cómo enviar la información sin recargar la página. Conseguí que funcionara, pero luego no pude mostrar los resultados de la función debajo de los campos de entrada, ya que la página necesitaba recargarse, ejecutando el archivo .py nuevamente, para poder hacer eso. Luego leí sobre AJAX, que mostraría la entrada de forma asíncrona en la página original, evitando que la página se vuelva a cargar. Sin embargo, necesito que la información se procese en mi archivo .py que tiene todo el código Flask y, al hacerlo, la página se vuelve a cargar cuando uso render_template() y los campos dinámicos desaparecen. ¿Quizás haya alguna otra forma de agregar Python a AJAX?
He descartado dos opciones: sé que es posible simplemente escribir una función de procesamiento en JavaScript, pero esta es un poco complicada y requiere bibliotecas externas, por lo que realmente necesito Python. En segundo lugar, pude detener la recarga de la página original y obtener el resultado en una nueva pestaña. Esta no es mi opción favorita desde una perspectiva de UX.
¿Es Jinja algo que sería útil aquí?
Siento que lo que estoy tratando de hacer tiene que ser posible de alguna manera, pero me falta por completo cómo hacerlo. Creo que el método anterior no puede funcionar lógicamente dado el orden en que deben ejecutarse estos procesos. ¡Cualquier corrección o comentario sobre lo anterior sería muy apreciado!