Django csv错误和编写业务逻辑的最佳位置

时间:2012-09-12 11:48:06

标签: python django

修改

通过将enctype="multipart/form-data"添加到表单模板来解决Q1问题。请评论Q2。

Qn1:尝试读取通过Forms上传的csv文件时出现以下错误。例外可能在这一行。

records = csv.reader(f)

不确定要通过什么。请参阅下面的代码。

Qn2:可以在模型中进行csv处理(csv用于上传域数据,因此验证/并作为域对象保留)。我是Django / Python的新手,到目前为止我看到的大多数示例在模型中没有太多方法。这与我以前捕获与模型相关的所有业务逻辑的位置略有不同。想知道django中的惯用法。

例外:

Django Version: 1.4.1
Exception Type: TypeError
Exception Value:    
argument 1 must be an iterator

查看:

def upload(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            w = Testme()
            w.importCsv(form.cleaned_data["file"])
            return HttpResponseRedirect('/')
    else:
        form = UploadFileForm()
    return render_to_response('setup.html', {'form': form},context_instance=RequestContext(request))

形式:

class UploadFileForm(forms.Form):
    title = forms.CharField(required=False)
    file = forms.FileField(required=False)

型号:

class Testme(models.Model):
    code = models.IntegerField()
    ctu = models.IntegerField()
    address = UsAddress

    def importCsv(self, f):
        records = csv.reader(f)
        for line in records:
            logger.debug(line)

1 个答案:

答案 0 :(得分:0)

尝试直接从request.FILES对象传递文件。

w.importCsv(request.FILES['file'])