Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python使用Django请求Post请求数据_Python_Django - Fatal编程技术网

Python使用Django请求Post请求数据

Python使用Django请求Post请求数据,python,django,Python,Django,我试图将一个简单的post请求发送到一个非常简单的django服务器,但我无法理解为什么post数据没有出现在requests post字典中,而是出现在请求体中 客户端代码: payload = {'test':'test'} headers = {'Content-type': 'application/json','Accept': 'text/plain'} url = "localhost:8000" print json.dumps(payload)

我试图将一个简单的post请求发送到一个非常简单的django服务器,但我无法理解为什么post数据没有出现在requests post字典中,而是出现在请求体中

客户端代码:

    payload = {'test':'test'}
    headers = {'Content-type': 'application/json','Accept': 'text/plain'}
    url = "localhost:8000"
    print json.dumps(payload)
    r = requests.post(url,data=json.dumps(payload),headers=headers)
服务器代码:

def submit_test(request):
    if request.method == 'POST':
          print 'Post: "%s"' % request.POST
          print 'Body: "%s"' % request.body
          return HttpResponse('')
服务器上打印的内容是:

Post: "<QueryDict: {}>"
Body: "{"test": "test"}"
Post:“
正文:“{”测试“:“测试”}”
我对标题进行了处理,并将数据作为直接的字典发送,但似乎没有任何效果


有什么想法吗?谢谢

POST字典只包含请求正文中发送的表单编码数据。
body
属性将请求的原始正文作为字符串包含。由于您发送的是json编码的数据,因此它只显示在原始
正文
属性中,而不显示在
POST

请在中查看更多信息

尝试使用表单编码数据,您还应该看到
POST
dict中的值:

payload = {'test':'test'}
url = "localhost:8000"
requests.post(url, data=payload)

您应该从标题中删除“内容类型”,并使用默认类型,即“多部分/表单数据”

response = client.post(
    '/some_url/',
    data={'post_key': 'some_value'},
    # content_type='application/json'
)

如果取消注释“content\u type”,数据将仅在request.body中。在标题中指定用户代理应使Django能够解释body的原始数据并正确填充POST dictionary。以下方面应起作用:

payload = {'test': 'test'}
url = "http://localhost:8000"
headers = {'User-Agent': 'Mozilla/5.0'}
requests.post(url, data=payload, headers=headers)

我试过了,结果也一样。仅仅从身体里读出并处理它有什么严重的错误吗?谢谢如果您通过json与服务器通信,那么我认为从body属性中读取内容是一种规范的方法。这是我过去所做的。:)我知道,这个评论已经晚了,但这应该是正确的解决方案,因为这是唯一的工作方法!