django csv文件上传管理

itz*_*nTV 6 javascript python django jquery python-3.x

def createlist(request):
    if request.method == 'POST':
        files =  request.FILES['ListFile']
        print(type(files))
        csv_file = csv.DictReader(files)
        for i in csv_file:
            print(i)
    return HttpResponse("ok")
Run Code Online (Sandbox Code Playgroud)

这给了
'django.core.files.uploadedfile.InMemoryUploadedFile'_csv.Error类
:迭代器应该返回字符串,而不是字节(你是否在文本模式下打开文件?)
这里我使用ajax
js 发布这个文件:

$('#form1').ajaxForm(function(data) { 
           alert(data) ; 
        });
Run Code Online (Sandbox Code Playgroud)

itz*_*nTV 9

使用codec.iterdecode,我解决了它.我认为这是由于python 3.x

import codecs

def createlist(request):
    if request.method == "POST":    
        fil =  request.FILES['ListFile']
        csvfile = csv.DictReader(codecs.iterdecode(fil, 'utf-8'))
        for i in csv_file:
            print(i)
    return HttpResponse("ok") 
Run Code Online (Sandbox Code Playgroud)