2
我有一個Django模型如下:的Django FileField字段編碼
class ExportFile(BaseExportFile):
created_timestamp = models.DateTimeField(auto_now=True, editable=False)
data = models.FileField(upload_to='exports')
,並呈現一個模板來創建一個CSV文件中的視圖功能:
def create_csv(request):
context = Context({'data': MyModel.objects.all()})
rendered = render_to_string('mytemplate.html', context)
# create tradefile and save
cf = ContentFile(rendered)
tf = ExportFile()
tf.data.save('myfile.csv', cf)
tf.save()
response = HttpResponse(mimetype='text/csv')
response['Content-Disposition'] = 'attachment; filename=%s' % 'myfile.csv'
response.write(rendered)
return response
的觀點不僅節省了CSV數據到FileField,但它也會將其返回給瀏覽器。我遇到的問題是瀏覽器文件完美地工作,但保存在模型上的文件是兩倍的大小,當我使用diff程序時,我可以看到額外的隱藏字符。我認爲它必須與mime類型和django自動保存utf8相關,但我無法想象它!