国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

在Python的Django框架中生成CSV文件的方法

2019-11-25 17:08:52
字體:
來源:轉載
供稿:網友

CSV 是一種簡單的數據格式,通常為電子表格軟件所使用。 它主要是由一系列的表格行組成,每行中單元格之間使用逗號(CSV 是 逗號分隔數值(comma-separated values) 的縮寫)隔開。例如,下面是CSV格式的“不守規矩”的飛機乘客表。

Year,Unruly Airline Passengers1995,1461996,1841997,2351998,2001999,2262000,2512001,2992002,2732003,2812004,3042005,2032006,1342007,147

備注

前面的列表包含真實數據。 這些數據來自美國 聯邦航空管理局。

CSV格式盡管看起來簡單,卻是全球通用的。 但是不同的軟件會生成和使用不同的 CSV 的變種,在使用上會有一些不便。 幸運的是, Python 使用的是標準 CSV 庫, csv ,所以它更通用。

因為 csv 模塊操作的是類似文件的對象,所以可以使用 HttpResponse 替換:

import csvfrom django.http import HttpResponse# Number of unruly passengers each year 1995 - 2005. In a real application# this would likely come from a database or some other back-end data store.UNRULY_PASSENGERS = [146,184,235,200,226,251,299,273,281,304,203]def unruly_passengers_csv(request):  # Create the HttpResponse object with the appropriate CSV header.  response = HttpResponse(mimetype='text/csv')  response['Content-Disposition'] = 'attachment; filename=unruly.csv'  # Create the CSV writer using the HttpResponse as the "file."  writer = csv.writer(response)  writer.writerow(['Year', 'Unruly Airline Passengers'])  for (year, num) in zip(range(1995, 2006), UNRULY_PASSENGERS):    writer.writerow([year, num])  return response

代碼和注釋可以說是很清楚,但還有一些事情需要特別注意:

  •     響應返回的是 text/csv MIME類型(而非默認的 text/html )。這會告訴瀏覽器,返回的文檔是CSV文件。
  •     響應會有一個附加的 Content-Disposition 頭部,它包含有CSV文件的文件名。 這個頭部(或者說,附加部分)會指示瀏覽器彈出對話框詢問文件存放的位置(而不僅僅是顯示)。 這個文件名是任意的。 它會顯示在瀏覽器的另存為對話框中。
  •     要在HttpResponse指定頭部信息,只需把HttpResponse當做字典使用就可以了。
  •     與創建CSV的應用程序界面(API)掛接是很容易的: 只需將 response 作為第一個變量傳遞給 csv.writer 。 csv.writer 函數需要一個文件類的對象, HttpResponse 正好能達成這個目的。
  •     調用 writer.writerow ,并且傳遞給它一個類似 list 或者 tuple 的可迭代對象,就可以在 CSV 文件中寫入一行。
  •     CSV 模塊考慮到了引用的問題,所以您不用擔心逸出字符串中引號和逗號。 只要把信息傳遞給 writerow() ,它會處理好所有的事情。

在任何需要返回非 HTML 內容的時候,都需要經過以下幾步: 創建一個 HttpResponse 響應對象(需要指定特殊的 MIME 類型),它它傳給需要處理文件的函數,然后返回這個響應對象。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 晋州市| 成都市| 铁岭市| 保亭| 永康市| 夏津县| 普陀区| 朔州市| 桂林市| 丰城市| 东山县| 乐都县| 漠河县| 凤山县| 冕宁县| 潼关县| 西宁市| 济南市| 霍邱县| 临武县| 治县。| 宿松县| 安塞县| 鹿泉市| 白山市| 宜宾市| 宜丰县| 新蔡县| 奎屯市| 奉贤区| 中牟县| 赤水市| 泰安市| 鹤峰县| 民勤县| 邹平县| 延吉市| 辛集市| 汉阴县| 巨鹿县| 余干县|