在赋值之前引用/ uploaded_files / local变量'i'的UnboundLocalError?

时间:2013-01-25 10:10:44

标签: python django

我有这样的代码:

choices = request.POST.getlist('choice')
    #choices1 = len(choices) 
    for i in choices:
        new_source = source +"/"+ i 
        start_date = datetime.datetime.utcnow().replace(tzinfo=utc)
        source12 = new_source.replace(' ', '') #Remove whitespaces
        subprocess.Popen(['sshpass', '-p', password, 'rsync', '-avz', '--info=progress2', source12, destination], 
                                    stderr=subprocess.PIPE, stdout=subprocess.PIPE).communicate()[0]
        end_date = datetime.datetime.utcnow().replace(tzinfo=utc)
        duration = end_date - start_date
        start_date = start_date.strftime("%B %d, %Y, %H:%M%p")
        end_date = end_date.strftime("%B %d, %Y, %H:%M%p")
        #basename = os.path.basename(source) #Get file_name
        extension = os.path.splitext(i)[1][1:] #Get the file_extension
        fullname = os.path.join(destination, i) #Get the file_full_size to calculate size
        st = int(os.path.getsize(fullname))
        f_size = size(st, system=alternative)
        dur1 = convert_timedelta(duration)
        dur = duration_conversion(dur1)
        b = File(users_id=request.user.id, file_name=i, type=extension, source='ngs.pradhi.com', start_date=start_date, end_date=end_date, duration=dur, size_overview=st, size=f_size, flag='F')
        b.save()

    return render_to_response('uploaded_files.html', {'files': b, 'username':username, 'host':a, 'files_server':files_in_server, 'file_size':filesize, 'date':date, 'total_files_selected':i , 'list_users':users_b}, context_instance=RequestContext(request))  

我想找到选择列表的长度以便向用户显示。首先,我尝试将变量传递为:

choices = request.POST.getlist('choice')
choices1 = len(choices) 

当用户选择了多个文件时,将choices1变量传递给模板仅返回0。所以,我试图传递产生此错误的变量i:

UnboundLocalError at /uploaded_files/ local variable 'i' referenced before assignment?

我做错了什么?

1 个答案:

答案 0 :(得分:0)

 i = ""

 choices = request.POST.getlist('choice[]')
 for i in choices:
    ........

我应该在作业之前有默认值i =“”并且要获得列表,你必须把[]