2014-09-25 62 views
0

請幫忙解決問題。如何獲取下載文件的名稱?

我使用上面的表格加載文件。繼承人view.py:

def change_avatar(request): 
    entry_user_profile = UserProfile.objects.get(user_ptr_id=request.user.id) 

    avatar = entry_user_profile.avatar     
    form = ChangeAvatarForm(instance=entry_user_profile)   

    if request.method == 'POST' and request.is_ajax():                
     form = ChangeAvatarForm(request.POST, request.FILES, instance=entry_user_profile) 
     if form.is_valid():    
      form.save() 

      for filename, blob in request.FILES.iteritems(): 
       name = request.FILES[filename].name  

      data = {'sourceImg': name[0]} 
      print(name[0]) 
      return HttpResponse(json.dumps(data), content_type='application/json')   

    t = loader.get_template('page_change_avatar.html') 
    c = RequestContext(request, { 
     'form': form, 
     'avatar': avatar, 
    }, [custom_proc]) 

    return HttpResponse(t.render(c))  

問題是,沒有字典「名稱」的文件名。如下日誌中的錯誤信息:

AttributeError: 'MultiValueDict' object has no attribute 'iteritems'

P3.4/D1.6

回答

0

只有items()取代iterateitems()

def change_avatar(request): 
    entry_user_profile = UserProfile.objects.get(user_ptr_id=request.user.id) 

     avatar = entry_user_profile.avatar     
     form = ChangeAvatarForm(instance=entry_user_profile)   

     if request.method == 'POST' and request.is_ajax():                
      form = ChangeAvatarForm(request.POST, request.FILES, instance=entry_user_profile) 
      if form.is_valid():    
       form.save() 

       #changed here  

       for filename, blob in request.FILES,items(): 
        name = request.FILES[filename].name  

       data = {'sourceImg': name[0]} 
       print(name[0]) 
       return HttpResponse(json.dumps(data), content_type='application/json')   

     t = loader.get_template('page_change_avatar.html') 
     c = RequestContext(request, { 
      'form': form, 
      'avatar': avatar, 
     }, [custom_proc]) 

     return HttpResponse(t.render(c))