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

不言
Libérer: 2018-04-08 11:22:19
original
2285 Les gens l'ont consulté

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>
Copier après la connexion

Méthode 1 : Utilisez HttpResponse

pour acheminer l'URL :

url(r&#39;^download/&#39;,views.download,name="download"),
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal