【问题标题】:DRF PATCH method, got all values at type of string in request.dataDRF PATCH 方法,获取 request.data 中字符串类型的所有值
【发布时间】:2018-08-12 17:05:38
【问题描述】:

我在 vue 中发送带有表单数据的 axios.patch 请求

axios.patch(`${API_BASE}/products/${id}/`, data, {
  headers: { 'Content-Type': 'multipart/form-data'
}

并调用 Django ModelViewset 部分更新

    class MyViewSet(viewsets.ModelViewSet):
        def update(self, request, *args, **kwargs):
            data = request.data.copy()
            question = self.get_object()
            ...

问题是我以字符串形式获取所有值.. null 值作为“null”,整数值作为“1”,依此类推。 enter image description here

如何在 request.data 中获取正常值(null 为 None,整数为 int)?

【问题讨论】:

  • 使用序列化器并在序列化器初始化中设置partial=True。例如:serializer = YourSerializer(request, data=request.data, partial=True)
  • @zaidfazil 感谢您的回复,但问题是关于“我在 request.data 中接收空值作为'null'类型的字符串。我应该怎么做才能在请求中接收空值作为 None .data?
  • request.data 始终是QueryDict,。序列化器用于解释请求中的数据。为您的数据编写一个序列化程序,序列化程序中的验证数据将是您可以使用的。
  • @zaidfazil 知道了,谢谢!

标签: vue.js django-rest-framework django-rest-viewsets


【解决方案1】:

如何在 request.data 中获取正常值(null 为 None,整数为 int)?

使用 JSON 或使用序列化程序的验证数据。 HTML 表单以键/值对形式作为字符串发送。

【讨论】:

  • 您好,感谢您的回复。我不能使用 JSON,因为我的表单包含图像并且我无法获取经过验证的数据,因为我正在覆盖 ModelViewset 的更新方法并获取 request.data 以进行一些操作。
  • 所以这取决于你自己做演员。
【解决方案2】:

通过在 patch 方法之前将 null 值设置为空字符串并在序列化程序中设置 allow_null=True 来解决此问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 2020-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    相关资源
    最近更新 更多