使用python-requests发布数据

时间:2015-11-27 10:10:27

标签: python django python-requests

我试图发布以下数据。但是我收到了错误。你能看一下吗?非常感谢。

我使用Postman发布相同的数据。它有效。

html

发布数据

def _build_post_data(bike_instance):
    """
    data = {
        "apikey": "XXX",
        "data": {
            "created_at": "date_XX",
            "Price": "Decimal_XX"
        }
    }
    """
    data = {}
    raw_data = serializers.serialize('python', [bike_instance])
    actual_data = [d['fields'] for d in raw_data]
    data.update(
        {
            "apikey": XXX,
            "data": actual_data[0]
        }
    )
    return data

错误

bike = Bike.objects.get(pk=XXX)

data = _build_post_data(bike)

dump_data = json.dumps(data, cls=DjangoJSONEncoder)

requests.post(url, data=dump_data)
已经在dict中的

u'{"error":{"message":"422 Unprocessable Entity","errors":[["The data field is required."],["The apikey field is required."]],"status_code":422}}' data。那我为什么会收到错误?有什么想法吗?

邮差工作

enter image description here

1 个答案:

答案 0 :(得分:3)

使用邮递员,您发送multipart/form-data请求,requests仅发送JSON (邮递员中data字段的值),并且不包括apikey字段。

使用带有JSON数据的字典作为其中一个值,并将其作为files参数传递。 可能也可以作为data参数(发送为application/x-www-urlencoded):

form_structure = {'apikey': 'XXXX', 'data': dump_data}
requests.post(url, files=form_structure)
# probably works too: requests.post(url, data=form_structure)