Django可直接在視圖函數中生成csv文件 並響應給瀏覽器
import csv
from django.http import HttpResponse
from .models import Book
def make_csv_view(request):
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="mybook.csv"'
all_book = Book.objects.all()
writer = csv.writer(response)
writer.writerow(['id', 'title'])
for b in all_book:
writer.writerow([b.id, b.title])
return response
- 響應獲得一個特殊的MIME類型
text / csv
。這告訴瀏覽器該文檔是CSV文件,而不是HTML文件 - 響應會獲得一個額外的
Content-Disposition
標頭,其中包含CSV文件的名稱。它將被瀏覽器用於“另存爲…”對話框 - 對於CSV文件中的每一行,調用
writer.writerow
,傳遞一個可迭代對象,如列表或元組。