空请求.FILES与Django上传表单 [英] Empty Request.FILES with Django Upload forms

查看:138
本文介绍了空请求.FILES与Django上传表单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

尝试使用非常简单的表单将文件上传到新的类实例中。我希望在 request.FILES 中都有这两个文件,但它是空的。我在捆绑的开发者服务器上。



被困在这里,并通过所有相关问题。

  wayfinder_map.media_file = request.FILES ['media_file'] 

生成


MultiValueDictKeyError:Keymedia_file'在MultiValueDict中找不到:
{}>


模型

 类WayfinderMap 
寻找地图配置


media_file = models.FileField(upload_to =maps,null = True,blank = True )
wall_file = models.FileField(upload_to =maps_data,null = True,blank = True)

视图

  @login_required 
def create_map(request,form_class = WayfinderMapForm ,template_name =wayfinder / map / create.html):
wayfinder_map_form = form_class(request.user,request.POST或None,request.FILES)

如果wayfinder_map_form.is_valid():
wayfinder_map = wayfinder_map_form.save(commit = False)
wayfinder_map.media_file = request.FILES ['media_file']
wayfinder_map.data_file = request.FILES [' data_file']
wayfinder_map.creator = request.user
wayfinder_map.save()
返回HttpResponseRedirect(wayfinder_map.get_absolute_url())

返回render_to_response(template_name,{
wayfinder_map_form:wayfinder_map_form,
},context_instance = RequestContext(request)

模板

 < form enctype =multipart / form-dataclass =uniForm id =wayfinder_map_formmethod =POSTaction => 
< fieldset class =inlineLabels>
{{wayfinder_map_form | as_uni_form}}
< div class =form_block>
< input type =hiddenname =actionvalue =create/>
< input type =submitvalue ={%trans'cre​​ate'%}/>
< / div>
< / fieldset>
< / form>


解决方案

看起来像request.FILES在这里是不必要的案例(好事因为空...)



我修改了这一行

  wayfinder_map.media_file = request.FILES ['media_file'] 

for

  wayfinder_map.media_file = wayfinder_map_form.cleaned_data ['media_file'] 

它可以工作。不知道什么是正确的方式做事情虽然... -


Trying to use a very simple form to upload a file into a new class instance. I am expecting to have both files in request.FILES but it's empty. I am on the bundled dev server.

Been stuck here and went through all related questions.

wayfinder_map.media_file = request.FILES['media_file'] 

generates

MultiValueDictKeyError: "Key 'media_file' not found in MultiValueDict: {}>"

model

class WayfinderMap(models.Model):
    """ Way-finding Map Config"""


    media_file = models.FileField(upload_to="maps", null=True, blank=True) 
    wall_file = models.FileField(upload_to="maps_data", null=True, blank=True) 

view

@login_required
def create_map(request, form_class=WayfinderMapForm, template_name="wayfinder/map/create.html"):
wayfinder_map_form = form_class(request.user, request.POST or None, request.FILES)

    if wayfinder_map_form.is_valid():
        wayfinder_map = wayfinder_map_form.save(commit=False)
        wayfinder_map.media_file = request.FILES['media_file']
        wayfinder_map.data_file = request.FILES['data_file']
        wayfinder_map.creator = request.user
        wayfinder_map.save()
    return HttpResponseRedirect(wayfinder_map.get_absolute_url())

return render_to_response(template_name, {
    "wayfinder_map_form": wayfinder_map_form,
}, context_instance=RequestContext(request))

template

<form enctype="multipart/form-data" class="uniForm" id="wayfinder_map_form" method="POST" action="">
        <fieldset class="inlineLabels">
            {{ wayfinder_map_form|as_uni_form }}
            <div class="form_block">
                <input type="hidden" name="action" value="create" />
                <input type="submit" value="{% trans 'create' %}"/>
            </div>
        </fieldset>
    </form>

解决方案

It seems as request.FILES is not necessary in this case (good thing cause it's empty ...)

I modified this line

wayfinder_map.media_file = request.FILES['media_file'] 

for

wayfinder_map.media_file = wayfinder_map_form.cleaned_data['media_file'] 

and it works. Not sure what the right way to do thing though... –

这篇关于空请求.FILES与Django上传表单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆