欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解django三種文件下載方式

 更新時間:2018年04月06日 08:43:05   作者:W-D  
這篇文章主要介紹了詳解django三種文件下載方式,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

一、概述

在實際的項目中很多時候需要用到下載功能,如導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的子類,內部使用迭代器進行數據流傳輸。

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

相關文章

  • Python Numpy運行報錯:IndexError: too many indices for array的分析及解決

    Python Numpy運行報錯:IndexError: too many in

    在使用Numpy進行數組操作時,經常會遇到各種錯誤,其中,IndexError: too many indices for array是一種常見的錯誤,它通常發(fā)生在嘗試使用一個過多維度的索引來訪問一個較低維度的數組時,本文介紹了Python Numpy報錯的解決辦法,需要的朋友可以參考下
    2024-07-07
  • 深入理解Python虛擬機中的Code?obejct

    深入理解Python虛擬機中的Code?obejct

    在本篇文章當中主要給大家深入介紹在?cpython?當中非常重要的一個數據結構?code?object!?我們簡單介紹了一下在?code?object?當中有哪些字段以及這些字段的簡單含義,在本篇文章當中將會舉一些例子以便更加深入理解這些字段
    2023-04-04
  • django多文件上傳,form提交,多對多外鍵保存的實例

    django多文件上傳,form提交,多對多外鍵保存的實例

    今天小編就為大家分享一篇django多文件上傳,form提交,多對多外鍵保存的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • python將音頻進行變速的操作方法

    python將音頻進行變速的操作方法

    這篇文章主要介紹了python將音頻進行變速的操作方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • 淺析python 內置字符串處理函數的使用方法

    淺析python 內置字符串處理函數的使用方法

    這篇文章主要介紹了python 內置字符串處理函數的使用方法,需要的朋友可以參考下
    2014-06-06
  • Python實現一個完整學生管理系統(tǒng)

    Python實現一個完整學生管理系統(tǒng)

    這篇文章主要為大家詳細介紹了如何利用python實現學生管理系統(tǒng)(面向對象版),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2023-01-01
  • python去掉空白行的多種實現代碼

    python去掉空白行的多種實現代碼

    這篇文章主要介紹了python去掉空白行實現代碼,需要的朋友可以參考下
    2018-03-03
  • 詳解Python最長公共子串和最長公共子序列的實現

    詳解Python最長公共子串和最長公共子序列的實現

    這篇文章主要介紹了詳解Python最長公共子串和最長公共子序列的實現。小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • Python中生成器和yield語句的用法詳解

    Python中生成器和yield語句的用法詳解

    這篇文章主要介紹了Python中生成器和yield語句的用法,生成器是Python編程進階中的重要知識點,需要的朋友可以參考下
    2015-04-04
  • django緩存配置的幾種方法詳解

    django緩存配置的幾種方法詳解

    緩存對各位學習或者使用django的朋友們來說應該都不陌生,下面這篇文章主要給大家介紹了關于django緩存配置的幾種方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-07-07

最新評論