この記事では主に Django でファイルをダウンロードする 3 つの方法を詳しく紹介します。編集者はそれが非常に優れていると考えたので、参考として共有します。編集者をフォローして一緒に見てみましょう
1. 概要
実際のプロジェクトでは、ExcelやPDFのインポート、ファイルのダウンロードなど、ダウンロード機能が必要になることももちろんあります。自分で構築する nginxなどのダウンロードに利用できるリソースサーバー ここでは主にdjangoでのファイルダウンロードを紹介します。
実装方法: タグ+レスポンスヘッダ情報(もちろんフォーム実装も選択可能)
<p class="col-md-4"><a href="{% url 'download' %}" rel="external nofollow" >点我下载</a></p>
方法1: HttpResponseを使用
ルーティングURL:
url(r'^download/',views.download,name="download"),
views .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
方法 2: StreamingHttpResponse を使用します
他のロジックは変更されず、主な変更はバックエンドで処理されます
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
方法 3: FileResponse を使用します
使い方概要
django公式サイトでは3つのhttpレスポンスオブジェクトが紹介されています。入口:https://docs.djangoproject.com/en/1.11/ref/request-response/
です。 FileResponse の使用が推奨されています。ソース コードから、FileResponse が StreamingHttpResponse のサブクラスであり、データ ストリーミングに内部的にイテレータを使用することがわかります。
以上がDjango_pythonでファイルをダウンロードする3つの方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。