无法使用Python/Django上载CSV文件

无法使用Python/Django上载CSV文件,python,django,csv,Python,Django,Csv,我正在尝试使用Django上传csv文件,并计划解析csv文件。但此代码无法上载文件,并继续转到else条件。这个代码有什么问题?谢谢 from django.shortcuts import render from django.shortcuts import render_to_response from django.template import RequestContext from django.http import HttpResponseRedirect from djang

我正在尝试使用Django上传csv文件,并计划解析csv文件。但此代码无法上载文件,并继续转到else条件。这个代码有什么问题?谢谢

from django.shortcuts import render
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse

import csv
import codecs

from items.models import UploadFileForm


def handle_files(f):
    reader = csv.DictReader(open(f))
    for row in reader:
    print row

def home(request):
    if request.method == "POST":
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            handle_files(request.FILES['file'])
            return HttpResponseRedirect('/workflow/')
        else:
            print form.errors
            print request.FILES
            return HttpResponseRedirect('/workflow/upload')

    else:
        form = UploadFileForm()
        return render(request, 'template.html', {'formset': form})
template.html

<form action="" method="post" enctype="multipart/form-data">{% csrf_token %}

   <input type="file" name="csv_file" />
   <input type="submit" value="Upload" />

</form>
相反,您可以尝试(除非启用了验证,否则不需要检查表单是否有效):


缩进是否正确?在某些地方,你使用了2个空格,在其他地方使用了4个空格!还有哪种情况?您的列表中有2个。同时向我们展示您提交的html表单。@AbijithMg我已经修复了缩进,这是输入时的一个打字错误stackoverflow@gipsy这是与表单关联的else条件。是否有效()表单元素中是否有
enctype='multipart/form data'
from django import forms

class UploadFileForm(forms.Form):
    title = forms.CharField(max_length=100)
    file = forms.FileField()
def home(request):
    if request.method == "POST":
        if request.FILES:
            handle_files(request.FILES['file'])
            return HttpResponseRedirect('/workflow/')
        else:
            return HttpResponseRedirect('/workflow/upload')

    else:
        form = UploadFileForm()
        return render(request, 'template.html', {'formset': form})