Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.2K
Visualizações
Descargar un archivo con Django

Esta podría ser una pregunta simple, pero de alguna manera simplemente no puedo encontrar la solución. Django ofrece mucho sobre la carga de archivos, pero ¿cómo hago para descargar un archivo?

Supongamos que tenemos un botón en HTML en uploads/something.txt como archivo.

Probé con django.views.static.serve , sin embargo, lo que hizo fue abrir un archivo en la página web.

Mi pregunta es simple: ¿Cuál es la forma mejor y más pitónica para que el usuario de nuestro sitio web descargue un archivo?

about 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

  • Tienes que leer ese archivo.
  • Servirlo usando HttpResponse junto con el tipo de contenido adecuado.

Aquí hay un código de muestra:

 content = open("uploads/something.txt").read() return HttpResponse(content, content_type='text/plain')

Esto debería servir como un archivo de texto.

Pero como usted describió, en algunos navegadores, no le pedirá que descargue el archivo, sino que lo mostrará en el navegador. Si desea mostrar un aviso de descarga, use esto:

 response = HttpResponse(open("uploads/something.txt", 'rb').read()) response['Content-Type'] = 'text/plain' response['Content-Disposition'] = 'attachment; filename=DownloadedText.txt' return response

Sin embargo, tenga en cuenta que podría ser una mejor idea servir contenido estático o archivos cargados a través de nginx o el proxy inverso de su elección. Enviar archivos grandes a través de Django podría no ser la forma más óptima de hacerlo.

about 4 years ago · Santiago Trujillo Relatório

0

import os from django.conf import settings from django.http import HttpResponse, Http404 def download(request, path): file_path = os.path.join(settings.MEDIA_ROOT, path) if os.path.exists(file_path): with open(file_path, 'rb') as fh: response = HttpResponse(fh.read(), content_type="application/vnd.ms-excel") response['Content-Disposition'] = 'inline; filename=' + os.path.basename(file_path) return response raise Http404
about 4 years ago · Santiago Trujillo Relatório

0

Tal vez un poco tarde, pero aquí está mi solución:

 def render(self, value): return format_html('<a href="/media/{0}" download>{0}</a>', value)
about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda