Maison  >  Article  >  développement back-end  >  Explication détaillée de trois façons de télécharger des fichiers dans Django_python

Explication détaillée de trois façons de télécharger des fichiers dans Django_python

不言
不言original
2018-04-08 11:22:192253parcourir

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 &#39;download&#39; %}" rel="external nofollow" >点我下载</a></p>

Méthode 1 : Utilisez HttpResponse

pour acheminer l'URL :

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

code vues.py

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

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(&#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

Méthode 3 : Utiliser FileResponse

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

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn