No he publicado una pregunta aquí antes, leer en su mayoría.Formulario de carga Django request.files vacío
Estoy aprendiendo Django y tengo la carga de archivos trabajando antes. Pero ahora lo he roto de alguna manera.
request.FILES está vacío cuando estoy cargando pero puedo ver el nombre del archivo en request.raw_post_data.
Este es el código HTML para el
<form enctype="multipart/form-data" method="post" action="">{% csrf_token %}
{{ form.as_p }}
<input type="submit" name="submit" value="Upload Photo" />
</form
forma
class PhotoUploadForm(forms.Form): title = forms.CharField(max_length=50) description = forms.CharField(required=False,max_length="254") photo = forms.ImageField()
la vista
class PhotoUploadView(FormView):
template_name ="album/photo_upload.html"
form_class = PhotoUploadForm
def get_context_data(self,**kwargs):
context = super(PhotoUploadView,self).get_context_data(**kwargs)
context['user_info'] = self.request.user
if 'upload_form' in kwargs:
context['upload_form'] = kwargs['upload_form']
else:
context['upload_form'] = PhotoUploadForm()
album = get_object_or_404(Album,id=self.kwargs['album_id'])
context['album'] = album
context['form'] = self.form_class
return context
def post(self,*args,**kwargs):
print self.request.FILES
print self.request.raw_post_data
if self.request.method == "POST":
form = PhotoUploadForm(self.request.POST,self.request.FILES)
if form.is_valid():
photo = Photo()
photo.title = form.cleaned_data['title']
photo.summary = form.cleaned_data['description']
photo.album = get_object_or_404(Album,id = kwargs['album_id'])
photo.is_cover_photo = True
path = self.generate_filename(self.request.FILES['photo'].name,self.request.user,kwargs['album_id'])
destination = open(path,"wb+")
for chunk in self.request.FILES['photo'].chunks():
destination.write(chunk)
destination.close()
photo.imagePath = path
photo.save()
return self.render_to_response(self.get_context_data(upload_form=form)
oh gracias, echó un vistazo a las formas de modelo y se ve muy dulce. No es tan repetitivo. ¿Debo cambiarlo y luego editar mi publicación principal para facilitar la lectura? – Ludvig
Cree que debe dejar la publicación tal como está, para que las personas tengan el contexto de la pregunta y la respuesta. –