Pycharm開發(fā)Django項(xiàng)目類視圖教程
生成CSV文件:
有時(shí)候我們做的網(wǎng)站,需要將一些數(shù)據(jù),生成有一個(gè)CSV文件給瀏覽器,并且是作為附件的形式下載下來。以下將講解如何生成CSV文件。
生成小的CSV文件:
這里將用一個(gè)生成小的CSV文件為例,來把生成CSV文件的技術(shù)要點(diǎn)講到位。我們用Python內(nèi)置的csv模塊來處理csv文件,并且使用HttpResponse來將csv文件返回回去。示例代碼如下:
import csv
from django.http import HttpResponse
def csv_view(request):
? ? response = HttpResponse(content_type='text?v')
? ? response['Content-Disposition'] = 'attachment; filename="somefilename.csv"'
? ? writer = csv.writer(response)
? ? writer.writerow(['username', 'age', 'height', 'weight'])
? ? writer.writerow(['zhiliao', '18', '180', '110'])
? ? return response
這里再來對(duì)每個(gè)部分的代碼進(jìn)行解釋:
我們?cè)诔跏蓟疕ttpResponse的時(shí)候,指定了Content-Type為text?v,這將告訴瀏覽器,這是一個(gè)csv格式的文件而不是一個(gè)HTML格式的文件,如果用默認(rèn)值,默認(rèn)值就是html,那么瀏覽器將把csv格式的文件按照html格式輸出,這肯定不是我們想要的。
第二個(gè)我們還在response中添加一個(gè)Content-Disposition頭,這個(gè)東西是用來告訴瀏覽器該如何處理這個(gè)文件,我們給這個(gè)頭的值設(shè)置為attachment;,那么瀏覽器將不會(huì)對(duì)這個(gè)文件進(jìn)行顯示,而是作為附件的形式下載,第二個(gè)filename="somefilename.csv"是用來指定這個(gè)csv文件的名字。
我們使用csv模塊的writer方法,將相應(yīng)的數(shù)據(jù)寫入到response中。
將csv文件定義成模板:
我們還可以將csv格式的文件定義成模板,然后使用Django內(nèi)置的模板系統(tǒng),并給這個(gè)模板傳入一個(gè)Context對(duì)象,這樣模板系統(tǒng)就會(huì)根據(jù)傳入的C