0

私はこのようなコードを持っています:

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?

私は何が間違っているのですか?

4

1 に答える 1

0
 i = ""

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

割り当ての前にデフォルト値 i="" が必要であり、リストを取得するには [] を配置する必要があります

于 2013-01-25T17:05:33.993 に答える