【问题标题】:Is there any way to post list of dictionary in django test client?有没有办法在 django 测试客户端中发布字典列表?
【发布时间】:2017-02-27 08:12:24
【问题描述】:

由于 Django 测试客户端仅接受 data={} 作为输入,我无法将 dict 列表(即 data=[{},{},{}] 传递给它。有什么解决办法吗?

【问题讨论】:

  • 您希望如何将其发布到视图中?

标签: django python-2.7


【解决方案1】:

以上解决方案都没有帮助我,客户总是在转储这个字典列表时遇到问题,但我推荐这里提出的解决方案:

https://stackoverflow.com/a/39155038/16062106

在你的情况下,它会是这样的:

response = client.generic("GET", URL, data=json.dumps(data), content_type="application/json",)

【讨论】:

    【解决方案2】:

    这行得通:

    response = client.post(url, json.dumps(data), content_type='application/json')
    

    【讨论】:

      【解决方案3】:

      您可以在字典中将值作为列表传递:

      data={"key": [{"key":"value"}, {"key":"value"}]}
      

      您也可以使用 MultiValueDict 作为值。

      你也可以作为列表传递

      import requests
      data = [{"key":"value"}, {"key":"value"}]
      a = requests.post('http://url', data)
      

      【讨论】:

      • 我实际上使用了 django rest bulk,它接受 dict 列表来发布多个 objetc。所以我想发布列表作为发布方法的参数。有可能吗?
      • @jd16 是的,可以在 url 中发送列表。
      • 很抱歉逐个提供细节。实际上,我正在编写 django 测试用例,其中使用了 django 包测试的客户端类。所以在测试用例中我无法通过列表。
      • "list" 没有方法 .items()。所以它期望 dict 在 post 方法中。那么我可以将对象列表传递给其他任何客户端吗?
      • AttributeError: 'list' 对象没有属性 'items'
      猜你喜欢
      • 2018-09-20
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 2016-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多