【问题标题】:how to get the name of the downloaded file?如何获取下载文件的名称?
【发布时间】:2014-09-25 09:35:14
【问题描述】:

请帮助解决问题。

我使用上面的表格加载文件。这是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' 对象没有属性 'iteritems'

p3.4/d1.6

【问题讨论】:

    标签: python django python-3.x


    【解决方案1】:

    iterateitems() 替换为items()

    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)) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-07
      • 2016-01-07
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-08
      • 1970-01-01
      相关资源
      最近更新 更多