91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解django三種文件下載方式

發布時間:2020-10-20 22:01:10 來源:腳本之家 閱讀:154 作者:W-D 欄目:開發技術

一、概述

在實際的項目中很多時候需要用到下載功能,如導excel、pdf或者文件下載,當然你可以使用web服務自己搭建可以用于下載的資源服務器,如nginx,這里我們主要介紹django中的文件下載。

實現方式:a標簽+響應頭信息(當然你可以選擇form實現)

<div class="col-md-4"><a href="{% url 'download' %}" rel="external nofollow" >點我下載</a></div>

方式一:使用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

方式二:使用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

方式三:使用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

使用總結

三種http響應對象在django官網都有介紹.入口:https://docs.djangoproject.com/en/1.11/ref/request-response/

推薦使用FileResponse,從源碼中可以看出FileResponse是StreamingHttpResponse的子類,內部使用迭代器進行數據流傳輸。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新乡市| 东源县| 桃园县| 贡觉县| 饶阳县| 商河县| 静乐县| 仙游县| 青铜峡市| 天水市| 英超| 于田县| 阿荣旗| 永寿县| 通辽市| 南安市| 务川| 霍州市| 开封县| 五指山市| 龙江县| 临邑县| 仁寿县| 正安县| 昌宁县| 榆中县| 孟村| 当雄县| 花莲市| 定日县| 涟源市| 社旗县| 凤城市| 南投县| 浏阳市| 拜泉县| 奇台县| 霍林郭勒市| 饶河县| 龙门县| 军事|