【问题标题】:DRF failing when content type = json内容类型 = json 时 DRF 失败
【发布时间】:2019-05-15 06:11:45
【问题描述】:

我正在使用带有 angularJS 应用程序的 Django Rest Framework,它运行良好。但是,当我尝试使用 python 请求与其任何端点进行通信时,每当我设置 Content-Type =“application/json”时都会出现错误。这是一个例子:

import requests
res = requests.post(url, data=data, headers={
    "Authorization": "Bearer %s" % token_json['access'],
    "Content-Type": "application/json"
})

# And in my django view
path = request.data['path']

{'detail': 'JSON 解析错误 - 期望值:第 1 行第 1 列 (char 0)'}

但是,一旦我删除了 Content-Type: application/json 行,事情就开始工作了——尽管我的 json 没有正确传递(例如,2 作为字符串 "2" 而不是数字 @987654325 传递@)。

【问题讨论】:

    标签: python json django-rest-framework python-requests


    【解决方案1】:

    使用json 参数,该参数从version 2.4.2 开始可用。

    一个例子是:

    import requests
    res = requests.post(url, json=data, headers={
        "Authorization": "Bearer %s" % token_json['access']
    })
    

    注意我们如何设置json=data 而不是data=data,并省略了Content-Type 标头。它会自动对您使用json.dumps 传递的python 对象进行编码,并且还会为您设置正确的Content-Type 标头。

    【讨论】:

      猜你喜欢
      • 2015-08-01
      • 2021-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-19
      • 1970-01-01
      • 2021-04-30
      • 1970-01-01
      相关资源
      最近更新 更多