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 'download' %}" rel="external nofollow" >点我下载</a></p>
Methode 1 : Verwenden Sie HttpResponse
, um die URL weiterzuleiten:
url(r'^download/',views.download,name="download"),
views.py-Code
from django.shortcuts import HttpResponse def download(request): file = open('crm/models.py', 'rb') response = HttpResponse(file) response['Content-Type'] = 'application/octet-stream' #设置头信息,告诉浏览器这是个文件 response['Content-Disposition'] = 'attachment;filename="models.py"' 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('crm/models.py','rb') response =StreamingHttpResponse(file) response['Content-Type']='application/octet-stream' response['Content-Disposition']='attachment;filename="models.py"' return response
Methode 3: FileResponse verwenden
from django.http import FileResponse def download(request): file=open('crm/models.py','rb') response =FileResponse(file) response['Content-Type']='application/octet-stream' response['Content-Disposition']='attachment;filename="models.py"' 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!