空请求.FILES与Django上传表单 [英] Empty Request.FILES with Django Upload forms
问题描述
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'create'%}/>
< / 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屋!