Ausführliche Erklärung der drei Möglichkeiten zum Herunterladen von Dateien in Django_python

不言
Freigeben: 2018-04-08 11:22:19
Original
2297 Leute haben es durchsucht

In diesem Artikel werden hauptsächlich die drei Möglichkeiten zum Herunterladen von Dateien in Django im Detail vorgestellt. Der Herausgeber findet ihn recht gut, daher werde ich ihn jetzt mit Ihnen teilen und als Referenz verwenden. Folgen wir dem Editor und werfen einen Blick darauf

1. Übersicht

In tatsächlichen Projekten wird die Download-Funktion häufig benötigt. B. das Importieren von Excel-, PDF- oder Datei-Downloads. Natürlich können Sie Webdienste verwenden, um Ihre eigenen Ressourcenserver zu erstellen, die zum Herunterladen verwendet werden können, wie z. B. Nginx. Hier stellen wir hauptsächlich Datei-Downloads in Django vor.

Implementierungsmethode: ein Tag + Antwort-Header-Informationen (natürlich können Sie die Formularimplementierung wählen)

<p class="col-md-4"><a href="{% url &#39;download&#39; %}" rel="external nofollow" >点我下载</a></p>
Nach dem Login kopieren

Methode 1 : Verwenden Sie HttpResponse

, um die URL weiterzuleiten:

url(r&#39;^download/&#39;,views.download,name="download"),
Nach dem Login kopieren

views.py-Code

from django.shortcuts import HttpResponse
def download(request):
  file = open(&#39;crm/models.py&#39;, &#39;rb&#39;)
  response = HttpResponse(file)
  response[&#39;Content-Type&#39;] = &#39;application/octet-stream&#39; #设置头信息,告诉浏览器这是个文件
  response[&#39;Content-Disposition&#39;] = &#39;attachment;filename="models.py"&#39;
  return response
Nach dem Login kopieren

Methode 2: StreamingHttpResponse verwenden

Andere Logik bleibt unverändert, die wesentlichen Änderungen werden im Backend verarbeitet

from django.http import StreamingHttpResponse
def download(request):
  file=open(&#39;crm/models.py&#39;,&#39;rb&#39;)
  response =StreamingHttpResponse(file)
  response[&#39;Content-Type&#39;]=&#39;application/octet-stream&#39;
  response[&#39;Content-Disposition&#39;]=&#39;attachment;filename="models.py"&#39;
  return response
Nach dem Login kopieren

Methode 3: FileResponse verwenden

from django.http import FileResponse
def download(request):
  file=open(&#39;crm/models.py&#39;,&#39;rb&#39;)
  response =FileResponse(file)
  response[&#39;Content-Type&#39;]=&#39;application/octet-stream&#39;
  response[&#39;Content-Disposition&#39;]=&#39;attachment;filename="models.py"&#39;
  return response
Nach dem Login kopieren

Nutzungszusammenfassung

Auf der offiziellen Django-Website werden drei HTTP-Antwortobjekte vorgestellt: https://docs.djangoproject.com /en/1.11 /ref/request-response/

Es wird empfohlen, FileResponse zu verwenden. Aus dem Quellcode ist ersichtlich, dass FileResponse eine Unterklasse von StreamingHttpResponse ist und intern Iteratoren für das Datenstreaming verwendet.


Das obige ist der detaillierte Inhalt vonAusführliche Erklärung der drei Möglichkeiten zum Herunterladen von Dateien in Django_python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage