使用django验证多个上传图像

时间:2015-02-04 08:38:36

标签: python django django-forms

我正在尝试使用带有django的表单上传多个图像。我设法允许用户上传它们,但是当我验证表单时,我总是收到我需要上传图片的消息,但我可以看到request.FILES包含所有上传的图像。

这是我的表格:

class ProductForm(ModelForm):

    class Meta:
        model = models.Product
        fields = ['name', 'style', 'description', 'buy_url', 'price', 'currency', 'images']
        error_messages = {
            NON_FIELD_ERRORS: {
                'buy_url': "%(model_name)s's %(field_labels)s are not unique.",
            }
        }
        widgets = {
            'description': Textarea(attrs={'cols': 80, 'rows': 10}),
            'images': FileInput(attrs={'multiple': ''})
        }

这里的观点:

class CreateProductView(AuthenticatedUserView):
    template_name = 'myapp/product.html'

    def get_if_authenticated(self, request, user):
        form = ProductForm()
        return render(request, self.template_name, {"form": form})

    def post_if_authenticated(self, request, user):
        form = ProductForm(request.POST)
        if form.is_valid():
            product = form.save(commit=False)
            # Here do something with the images
            product.user = user
            product.save()
            return HttpResponseRedirect(reverse('myapp:actions'))

        return render(request, self.template_name, {"form": form})

我尝试添加方法clean_images,但它永远不会被调用。

如何在帖子请求中成功验证文件?

谢谢!

1 个答案:

答案 0 :(得分:1)

您还需要将request.FILES传递给表单。尝试从

更改行
form = ProductForm(request.POST)

form = ProductForm(request.FILES, request.POST)
相关问题