ホームページ  >  記事  >  バックエンド開発  >  Django_pythonでファイルをダウンロードする3つの方法を詳しく解説

Django_pythonでファイルをダウンロードする3つの方法を詳しく解説

不言
不言オリジナル
2018-04-08 11:22:192252ブラウズ

この記事では主に Django でファイルをダウンロードする 3 つの方法を詳しく紹介します。編集者はそれが非常に優れていると考えたので、参考として共有します。編集者をフォローして一緒に見てみましょう

1. 概要

実際のプロジェクトでは、ExcelやPDFのインポート、ファイルのダウンロードなど、ダウンロード機能が必要になることももちろんあります。自分で構築する nginxなどのダウンロードに利用できるリソースサーバー ここでは主にdjangoでのファイルダウンロードを紹介します。

実装方法: タグ+レスポンスヘッダ情報(もちろんフォーム実装も選択可能)

<p class="col-md-4"><a href="{% url &#39;download&#39; %}" rel="external nofollow" >点我下载</a></p>

方法1: HttpResponseを使用

ルーティングURL:

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

views .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

方法 2: StreamingHttpResponse を使用します

他のロジックは変更されず、主な変更はバックエンドで処理されます

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

方法 3: FileResponse を使用します

りー

使い方概要

django公式サイトでは3つのhttpレスポンスオブジェクトが紹介されています。入口:https://docs.djangoproject.com/en/1.11/ref/request-response/

です。 FileResponse の使用が推奨されています。ソース コードから、FileResponse が StreamingHttpResponse のサブクラスであり、データ ストリーミングに内部的にイテレータを使用することがわかります。


以上がDjango_pythonでファイルをダウンロードする3つの方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。