带有 Django 上传表单的空 Request.FILES [英] Empty Request.FILES with Django Upload forms

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

问题描述

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

被困在这里并解决了所有相关问题.

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

生成

<块引用>

MultiValueDictKeyError:在 MultiValueDict 中找不到键‘media_file’:{}>"

模型

class WayfinderMap(models.Model):"""寻路地图配置"""media_file = models.FileField(upload_to="maps", null=True, blank=True)wall_file = models.FileField(upload_to="maps_data", null=True, blank=True)

查看

@login_requireddef 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)如果 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.userwayfinder_map.save()返回 HttpResponseRedirect(wayfinder_map.get_absolute_url())返回render_to_response(模板名称,{wayfinder_map_form":wayfinder_map_form,}, context_instance=RequestContext(request))

模板

<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' %}"/>

</fieldset></表单>

解决方案

在这种情况下似乎 request.FILES 不是必需的(好事因为它是空的...)

我修改了这一行

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

为了

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... –

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

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