Heim >Backend-Entwicklung >Python-Tutorial >Ausführliche Erklärung der drei Möglichkeiten zum Herunterladen von Dateien in Django_python

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

不言
不言Original
2018-04-08 11:22:192326Durchsuche

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>

Methode 1 : Verwenden Sie HttpResponse

, um die URL weiterzuleiten:

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

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

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

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

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!

Stellungnahme:
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