Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

624
Vistas
Django - descargar archivo sin recargar la página

El flujo se ve así:

  1. el usuario está llenando el formulario
  2. el formulario se pasa al servidor por ajax
  3. el formulario se guarda en db, luego se crea el pdf con los datos del formulario y se guarda en la carpeta de la aplicación (probablemente un mal movimiento aquí...)
  4. el éxito de ajax hace que la página agregue un botón 'Descargar' con un valor igual al nombre del pdf actual, por lo que el botón 'Descargar' aparece para el usuario
  5. Si el usuario presiona el botón, se descargará el mismo pdf que se acaba de guardar.
  6. Actualizar la página hace que el botón desaparezca.

Me he quedado atascado en el punto 5. He creado otro ajax (para evitar recargar la página) vinculado al botón Descargar. Le pide correctamente al servidor que busque el archivo, crea un objeto de archivo django: pdf_file = File(open(file_path, 'rb')) y crea una HttpResponse con archivo y content_type='application/pdf' o 'application/download' . response['Content-Disposition'] es un attachment .

Luego, el ajax devuelve la respuesta, solo que no lo hace. El servidor no genera ningún error, pero se llama a la función de error ajax.

He leído que la descarga con ajax no es posible. ¿Me podrías ayudar un poco para aclararlo? Si los fragmentos anteriores no están claros, proporcionaré más código. Pitón 3.5, Django 1.10

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Gustar

 window.location.href = "/url/to/downloadfile/"

en javascript después del éxito del formulario de publicación. O

 #html <button onclick="myfiledownload()">Download</download> #javascript function myfiledownload(){ window.location.href = "/url/to/downloadfile/" }
about 4 years ago · Santiago Trujillo Denunciar

0

En lugar de usar ajax para descargar el archivo, vincule el botón a un enlace de descarga donde se puede alojar el archivo

https://www.misitioweb/descargar/?fileid=3247023

Al menos debe separar su archivo en una raíz de medios. Nota: en producción, tendrá que usar un cdn para alojar sus archivos estáticos.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda