Estoy escribiendo una aplicación Flask que permite al usuario seleccionar un proyecto y una versión del proyecto de dos menús desplegables, luego procesar y descargar un documento de Excel con información relevante para las selecciones realizadas. Pude hacer que esto funcione, pero mi código hace que el navegador muestre la animación de actualización hasta que el archivo esté completamente procesado y comience a descargarse. Idealmente, me gustaría que el navegador procese el archivo sin mostrar la animación de actualización. Mi código actual es el siguiente:
El usuario hace las selecciones y presiona el botón exportar usando este HTML:
<form method="POST" action=""> <h2 class="text-center">Select Project and Version</h2> {{ form.hidden_tag() }} <div class="form-group"> {{ form.projects(class="form-control-sm") }} {{ form.versions(class="form-control-sm") }} </div> <div class="form-group"> <button type="button" id="export" class="btn-primary form-control">Export</button> </div> </form>Al presionar exportar, se ejecuta el siguiente JavaScript:
let export_button = document.getElementById('export') export_button.onclick = function() { project_index = project_select.value; version_index = versions_select.value; location.href = '/' + project_index + '/' + version_index; }Se llama a la siguiente ruta para procesar y luego enviar el archivo para su descarga:
@app.route("/<project_index>/<version_index>") def export(project_index, version_index): # Call functions to process file return send_file(output, attachment_filename="testing.xlsx", as_attachment=True)El procesamiento del archivo incluye varias llamadas a la API que hacen que el proceso tarde aproximadamente 30 segundos. ¿Hay alguna manera de que esto funcione sin que el navegador muestre la animación de actualización? ¿Quizás usando AJAX?