尝试进行POST时未提交任何文件。 Django Rest框架 [英] No File was submitted while trying to make a POST. Django Rest Framework

查看:130
本文介绍了尝试进行POST时未提交任何文件。 Django Rest框架的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试进行 POST,但问题是我收到未提交文件错误,但我不知道为什么。

I'm trying to make a "POST", but the problem is that I get a "no file was submitted error" and I don't know why.

在我的 models.py

我没有图标在 PersonalDetail

PersonalDetailSample

class PersonalDetailSample(models.Model): 
    ...
    icon = models.FileField(_('icon'), db_index=True, null=True, blank=True, upload_to='files/')
    ...

serializers.py

class PersonalDetailSerializer(serializers.ModelSerializer):
    ...
    icon = serializers.FileField(source='details_sample.icon')
    ...

    class Meta:
        model = PersonalDetail
        fields = (
            ..., 'icon', ...
        )

和在我的 views.py中

def perform_create(self, serializer):
    preview_text, preview_name = personal_details.find_text_name(serializer.validated_data)
    serializer.save(user_id=self.request.user,
                    details_sample=serializer.validated_data['details_sample'],
                    content=serializer.validated_data['content'],
                    preview_name=preview_name)

我想做的帖子:

{
    "checked":true,
    "content": {
        "text_field_1": {
            "size":"small",
            "text":"My userdefined Title",
            "title":"Title"
        },
        "text_field_2": {
            "size":"big",
            "text":"I don't have inspiration",
            "title":"Nachricht"
        }
    },
    "details_sample":27,
    "preview_user_title": "This is my User Title"
}

我得到这个错误:(400错误的请求)

And I get this error: (400 Bad Request)


{
icon:[
没有文件已提交。
]
}

{ "icon": [ "No file was submitted." ] }

我不知道为什么...

And I don't know why...

也许有人遇到了同样的麻烦。

Maybe someone had the same trouble.

推荐答案

尝试在序列化程序上使用required = False,或者如果不需要使用其余的文件来写文件api使用read_only = True。

Try using required=False on serializer, or if you don't need to write at all on the file using the rest api use read_only=True.

required = False选项 http://www.django-rest-framework.org/api-guide/fields/#required

required=False option http://www.django-rest-framework.org/api-guide/fields/#required

class PersonalDetailSerializer(serializers.ModelSerializer):
    ...
    icon = serializers.FileField(source='details_sample.icon', required=False)
    ...

    class Meta:
        model = PersonalDetail
        fields = (
            ..., 'icon', ...
        )

或只读选项
http://www.django-rest-framework.org/api-guide/fields/#read_only

class PersonalDetailSerializer(serializers.ModelSerializer):
    ...
    icon = serializers.FileField(source='details_sample.icon', read_only=True)
    ...

    class Meta:
        model = PersonalDetail
        fields = (
            ..., 'icon', ...
        )

这篇关于尝试进行POST时未提交任何文件。 Django Rest框架的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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