Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django:Error';str';对象没有属性';获取';使用csv文件填充模型时_Django_File_Error Handling - Fatal编程技术网

Django:Error';str';对象没有属性';获取';使用csv文件填充模型时

Django:Error';str';对象没有属性';获取';使用csv文件填充模型时,django,file,error-handling,Django,File,Error Handling,我试图用如下csv文件填充模型: if form.is_valid(): #form.save() print("form1 valid") csvfile = request.FILES['myfilebase'] print(csvfile) try: f=open(csvfile,"rt") #print(csvfile) my_data

我试图用如下csv文件填充模型:

if form.is_valid():
        #form.save()
        print("form1 valid")
        csvfile = request.FILES['myfilebase']
        print(csvfile)
        try: 
            f=open(csvfile,"rt")
            #print(csvfile)
            my_data = csv.reader(f)
            for row in my_data:
                print(row)
        except:
            msg = "Cannot open file - is it CSV?"
            print("not opened")
            return msg

    else:
        print("not valide form")
但我得到了一个错误:

“str”对象没有属性“get”

这个问题出现在
csvfile
变量中,因为当我用完整路径替换
csvfile
时,我的代码工作得很好。从我的
FileField
编辑以下是我的观点:

def clientsBase(request):
    form = formFile(request.POST, request.FILES)
    #csvfile = request.POST['myfilebase']
    #print(csvfile)
    print("entrer en clientsBase")
    if form.is_valid():
        #form.save()
        print("form1 valid")
        csvfile = request.FILES['myfilebase']
        print(csvfile)
        try: 
            f=open(csvfile,"rt")
            #print(csvfile)
            my_data = csv.reader(f)
            for row in my_data:
                print(row)
        except:
            msg = "Cannot open file - is it CSV?"
            print("not opened")
            return msg

    else:
        print("not valide form")
    return redirect('/veentes/')

我如何处理这个错误有什么帮助吗。非常感谢

您没有显示所有代码,但这大概是在视图中。视图总是需要返回HttpResponse;您返回的是一个字符串msg。

我编辑了我的问题,我返回了一个重定向('/veentes/'),但在
块中,除了
之外,您返回了msg。现在我只在excep中打印了msg。我得到一个错误消息,它无法打开文件。为什么它不能打开它?因为
request.FILES['myfilebase']
不是文件名,而是内存中的文件。您应该直接将其传递给
csv.reader
,而不是调用open()。此外,您不应使用裸except语句;您应该只捕获您知道如何处理的错误。我理解,谢谢,但即使我这样做,我也得到了错误迭代器应该返回字符串,而不是字节(您是否以文本模式打开文件?)。我猜在对csvfile的行进行迭代时会发生这种情况