python - Django Rest Framework默认图像字段值返回验证

标签 python django rest django-rest-framework vue.js

我们在开发中使用 REST,并且我们的应用程序具有站点管理功能。其中名称、描述、标题和图标将来自 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字符串值就是返回的值。我们该如何解决这个问题?

附注

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

最佳答案

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

class Website(models.Model):

    icon = models.ImageField(blank=True)

DRF parsers

关于python - Django Rest Framework默认图像字段值返回验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42522259/

相关文章:

python - 为什么 Python 不会从函数中返回我的 mysql-connector 光标?

python - 在只需要更改日期的情况下创建日期时间对象的更好方法是什么?

python - 在 Python 中将多个列表合并为一个列表

Django 社交认证 : what is the best fork?

mysql - REST Api 中的资源 ID = 数据库中的主键

python - Autobahn Wamp Protocol如何获取客户端IP地址?

django - 多个 SearchVectorField 上的 SearchRank

django - 使用现有对象编辑Django模型?

python - 使用 Python 向 Glassfish 服务器发出 RESTFUL POST 请求

rest - 2 足 OAuth 和 REST