Empty Request.FILES with Django Upload forms

django, django-forms

Solution

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

Problem

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

Original source

Related problems