django框架學習 三十四 動態生成CSV檔案

2022-06-22 04:36:10 字數 1848 閱讀 2369

csv以純文字形式儲存數字和文字資料的儲存方式,純文字意味著改檔案是乙個字串行,不含必須像二進位制數字那樣的資料。csv檔案由任意數目的記錄組成,記錄間以某種換行符分隔;每條記錄由欄位組成,欄位間的分隔符是其他字元或者字串,最常見的是逗號或製表符,通常,所有記錄都有完全相同的字段序列。

要在django檢視中生成csv檔案,可以使用python的csv庫或者django的模版系統來實現。

一.使用python的csv庫

python自帶處理csv檔案的標準庫csv。csv模組的csv檔案建立功能類似於檔案物件建立,並且django的httpresponse物件也是類似於檔案的物件。

例項:

from django.http import httpresponseredirect,httpresponse

return response

相應物件的mime型別設定為text/csv,告訴瀏覽器返回的是乙個csv檔案。

相應物件設定裡附加的content-disposition協議頭,含有csv檔案檔案的名稱,檔名隨便取,瀏覽器會在「另存為...」對話方塊等環境中使用它。

要在生成csv的api中使用鉤子非常簡單:只需要把response作為第乙個引數傳遞給csv.writer。csv.writer方法接收乙個類似於檔案的物件,而httpresponse物件正好就是這麼個東西。

對於csv的每一行,呼叫writer.writerrow,向他傳遞乙個可迭代的物件比如列表或者元祖。

csv模板會為你處理各種引用,不用擔心沒有轉義字串中的引號或者逗號。只需要向writerow()傳遞你的原始字串,它就會執行正確的操作。

當處理大尺寸檔案時,可以使用django的streamhttpresponse類,通過流式傳輸,避免負載均衡器在伺服器生成響應的時候斷掉連線,提高傳輸可靠性。

在下面的例子中,利用python的生成器來有效處理發尺寸csv檔案的拼接和傳輸:

'''偽快取'''

CUDA學習(三十四)

c語言擴充套件 函式執行空間說明符 函式執行空間說明符表示函式是在主機上還是在裝置上執行,以及函式是從主機還是從裝置中呼叫。device device 執行空間說明符宣告乙個函式 global 和 device 執行空間說明符不能一起使用。global 空間說明符將乙個函式宣告為乙個核心。這樣的功能...

Django框架(十四) Django分頁元件

資料量大的話,可以分頁獲取,檢視 例如 圖書管理中,如果有成千上萬本書,要是都在乙個頁面中渲染出來,會影響頁面美觀,所以就要用分頁器分頁渲染 基本寫法基本寫法 後端 總資料拿出來 生成分頁器paginator物件 物件裡有屬性和方法 生成當前頁的物件,current page paginator.p...

Swift學習筆記(三十四) 函式型別

1 函式也可以賦值給乙個變數,此時這個變數的型別是什麼呢?import foundation func add a int,b int int let anotheradd int,int int add anotheradd 3,4 2 如果引數的返回值為空,那麼這個函式型別應該怎麼寫呢?impo...