Django REST框架默认图像字段值返回验证



我们在开发上使用休息,并且应用程序上有一个网站管理的功能。A名称,描述,标题和图标将来自API。我们还在另一个前端应用程序上有一个管理界面,可以更改API。

这是 models.py

class Website(models.Model):
    icon = models.ImageField()
    name = models.CharField(max_length=100)
    second_name = models.CharField(max_length=100)
    description = models.TextField()

这是 serializers.py:

class WebsiteSerializer(serializers.ModelSerializer):
    class Meta:
        model = Website
        fields = '__all__'

这是 views.py

class WebsiteViewSet(mixins.RetrieveModelMixin,
                     mixins.ListModelMixin,
                     mixins.UpdateModelMixin,
                     viewsets.GenericViewSet):
    model = Website
    queryset = Website.objects.filter()
    permission_classes = []
    renderer_classes = [renderers.JSONRenderer]
    serializer_class = WebsiteSerializer
    def list(self, request):
        serializer = self.get_serializer(self.queryset.first())
        data = serializer.data
        return Response(data)

我的问题是图标。更新图标时,它可以正常工作。但是,它返回'提交的数据不是文件。检查表单上的编码类型。'当您不更改图标时验证错误..

这是您获取API数据时返回的内容的示例:

{
    "id": 1,
    "icon": "http://192.168.0.110:8000/upload/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7_2017-02-23_%E4%B8%8B%E5%8D%886.02.42_zbAld6c.png",
    "name": "Hello",
    "second_name": "World",
    "description": "Bacon Loren Ipsum Porsum"
}

我认为这里的问题是,当我们不更改前端上的图标时,URL字符串值是返回的符号。我们如何解决这个问题?

P.S。

  • 我们在前端使用vue.js
  • DRF版本为3.5.1

取决于您的错误,我认为问题是ImageField是必需的字段。因此,您应该使用blank=True以表格进行跳过验证。您可能还需要MultiPartParser来解析图像。

class Website(models.Model):
    icon = models.ImageField(blank=True)

DRF解析器

相关内容

  • 没有找到相关文章

最新更新