Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

625
Views
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

over 4 years ago · Santiago Trujillo
2 answers
Answer question

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/" }
over 4 years ago · Santiago Trujillo Report

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.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!