【问题标题】:Django rest framework how to serialize a list of strings?Django rest框架如何序列化字符串列表?
【发布时间】:2018-03-08 19:14:48
【问题描述】:

我想在postman中给出一个字符串列表,例如:

['string1', 'string2', 'string3', 'string4', 'string5']

但是当它到达 serializer.is_valid() 时,它给了我:

"non_field_errors": [
            "Invalid data. Expected a dictionary, but got str."
        ]

这是我的序列化器:

class URLRequestedSerializer(serializers.Serializer):
    urls = serializers.ListField(child=serializers.CharField())

如何使序列化程序除字符串列表之外?

【问题讨论】:

  • 也许你应该显示你的序列化代码?
  • 发布了我的序列化程序。
  • 您需要向我们展示更多信息,此时您可以了解您实际发布的内容。如果您只发布一个字符串数组(考虑您的错误消息)可能意味着您的发布是错误的,因为您的序列化程序需要这样的 json:{"urls": ["string1", ...]}

标签: python django django-rest-framework


【解决方案1】:

就像错误消息所说的那样,您在 Postman 中以 JSON 格式发布了一个列表而不是字典。

您发布了:

['string1', 'string2', 'string3', 'string4', 'string5']

但你应该已经发布了:

{
    "urls": ["string1", "string2", "string3", "string4", "string5"]
}

请记住,您的序列化程序定义了字段 urls,因此您必须将数据发送到 JSON 正文中的正确字段:)

【讨论】:

    【解决方案2】:

    从postman收到的字符串列表是django中的字符串类型,尝试使用eval进行转换。

    【讨论】:

    • sry 但错误消息并未暗示任何类似的内容。 at 实际上表示帖子数据不符合序列化程序的要求。
    • 一般尽量避免eval
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    • 2015-07-06
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    相关资源
    最近更新 更多