Cet article présente principalement les trois façons de télécharger des fichiers dans Django. L'éditeur pense que c'est plutôt bon. Maintenant, je vais le partager avec vous et le donner comme référence. Suivons l'éditeur et jetons un coup d'œil.
1. Aperçu
Dans les projets réels, la fonction de téléchargement est souvent nécessaire. , comme l'importation de téléchargements Excel, PDF ou de fichiers. Bien sûr, vous pouvez utiliser des services Web pour créer vos propres serveurs de ressources pouvant être utilisés pour le téléchargement, comme nginx. Ici, nous introduisons principalement les téléchargements de fichiers dans Django.
Méthode de mise en œuvre : une balise + informations d'en-tête de réponse (vous pouvez bien sûr choisir la mise en œuvre du formulaire)
<p class="col-md-4"><a href="{% url 'download' %}" rel="external nofollow" >点我下载</a></p>
Méthode 1 : Utilisez HttpResponse
pour acheminer l'URL :
url(r'^download/',views.download,name="download"),
code vues.py
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
Méthode 2 : Utiliser StreamingHttpResponse
Les autres logiques restent inchangées, les principales modifications sont traitées dans le backend
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
Méthode 3 : Utiliser FileResponse
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
Résumé d'utilisation
Trois objets de réponse http sont présentés sur le site officiel de Django Entrée : https://docs.djangoproject.com. /fr/1.11 /ref/request-response/
Il est recommandé d'utiliser FileResponse. Il ressort du code source que FileResponse est une sous-classe de StreamingHttpResponse et utilise des itérateurs en interne pour le streaming de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!