Django文件字段编码

Django文件字段编码,django,file,utf-8,ascii,Django,File,Utf 8,Ascii,我有一个django模型,如下所示: class ExportFile(BaseExportFile): created_timestamp = models.DateTimeField(auto_now=True, editable=False) data = models.FileField(upload_to='exports') 以及一个视图函数,用于呈现模板以创建csv文件: def create_csv(request): context = C

我有一个django模型,如下所示:

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数据保存到文件字段,还将其返回到浏览器。我的问题是浏览器文件工作得很好,但是保存在模型上的文件大小是diff程序的两倍,当我使用diff程序时,我可以看到额外的隐藏字符。我想这一定与mime类型vs django自动保存utf8有关,但我就是搞不懂

解决了这个问题

ContentFile是cStringIO.StringIO的一个子类,它处理ASCII编码的文件。因此,字符串需要编码为ASCII,因为django中的所有内容默认为UTF8

cf = ContentFile(rendered.encode('ascii'))