2017-05-12 45 views
0

我想輸出我的模型作爲一個CSV文件。它與模型中的小數據工作正常,它是非常慢的大數據。其次,有一些錯誤輸出模型爲CSV.My邏輯,我是使用是:輸出CSV與Django的錯誤?

def some_view(request): 
    # Create the HttpResponse object with the appropriate CSV header. 
    response = HttpResponse(content_type='text/csv') 
    response['Content-Disposition'] = 'attachment; filename="news.csv"' 
    writer = csv.writer(response) 
    news_obj = News.objects.using('cms').all() 
    for item in news_obj: 
     #writer.writerow([item.newsText]) 
     writer.writerow([item.userId.name]) 

    return response 

並且我對着錯誤是:

UnicodeEncodeError: - 'ASCII' 編解碼器在0-6位置無法編碼的字符:在 範圍序數不(128)

,並進一步將其說: -

不能被編碼的串/解碼爲:عبداللهالحذ

+1

錯誤是你的編碼,通過編碼格式的內容配置像UTF-8 – Exprator

回答

0

更換線

writer.writerow([item.userId.name]) 

有:

writer.writerow([item.userId.name.encode('utf-8')]) 

之前保存unicode字符串到一個文件你必須在一些編碼中進行編碼G。大多數系統默認使用utf-8,所以這是一個安全的選擇。

+0

它不適用於大文件任何原因,如果你知道先生? –

+0

你是什麼意思?你收到什麼錯誤?文件有多大? –

+0

感謝您使用流式大型CSV文件所實施的擔憂 –

0

從錯誤,CSV文件的寫入內容就像是ASCII字符。所以解碼字符。

>>>u'aあä'.encode('ascii', 'ignore') 
'a' 

可以從忽略ASCII字符修復此錯誤:

writer.writerow([item.userId.name.encode('ascii', 'ignore')])