Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.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 将嵌套字典传递给请求模块_Python_Django_Python Requests - Fatal编程技术网

Python 将嵌套字典传递给请求模块

Python 将嵌套字典传递给请求模块,python,django,python-requests,Python,Django,Python Requests,我有一个嵌套的字典,我想把它传递给一个web服务(用PHP编写),但由于我无法访问所需的数据,我正在努力 这本字典看起来有点像 import requests from nested_dict import nested_dict data = nested_dict() data['name'] = 'test' data['cookies']['PHPSESSID']['name'] = 'PHPSESSID' data['cookies']['PHPSESSID']['essenti

我有一个嵌套的字典,我想把它传递给一个web服务(用PHP编写),但由于我无法访问所需的数据,我正在努力

这本字典看起来有点像

import requests
from nested_dict import nested_dict

data = nested_dict()

data['name'] = 'test'

data['cookies']['PHPSESSID']['name'] = 'PHPSESSID'
data['cookies']['PHPSESSID']['essential'] = 'Essential'

data['cookies']['CookieNotice']['name'] = 'CookieNotice'
data['cookies']['CookieNotice']['essential'] = 'Essential'
然后我提出我的要求:

r = requests.post('someurl.com', data = data)
在接收url someurl.com(用PHP编写)中,我可以访问第一级没有问题,例如

header('Content-Type: application/json');
$data = $_REQUEST;
$response['content'] = $data['name'];
$response = $response['content'];
echo json_encode($response);
问题是试图访问嵌套dict中的数据。我不知道当它访问someurl.com时会以什么形式到达,因此我无法使用它生成循环。我想做的是:

header('Content-Type: application/json');
$data = $_REQUEST;
$response['content'] = $data['name'];
  foreach ($data['cookies'] as $k => $v):
  $response['content'] .= $k." ".$v;
endforeach;

$response = $response['content'];
echo json_encode($response);
当响应在模板中打印出来时,嵌套节中存在内容

非常感谢任何帮助

更新

我尝试了许多排列,但仍在努力!我只需要能够将嵌套的dict(或json)传递到我的接收url“someurl.com”,并能够(json)在PHP中解码,例如$d=json\u decode($\u POST)

这“有效”,但我无法对响应“做”任何事情:

dat = json.dumps(data)
req = requests.get('someurl.com',params=dat)
当我尝试使用requests.post时,如果我传递原始字典或将其转换为json,我将无能为力


非常感谢

我的解决方案如下:

import requests,json
from nested_dict import nested_dict

data = nested_dict()

data['name'] = 'test'

data['cookies']['PHPSESSID']['name'] = 'PHPSESSID'
data['cookies']['PHPSESSID']['essential'] = 'Essential'

data['cookies']['CookieNotice']['name'] = 'CookieNotice'
data['cookies']['CookieNotice']['essential'] = 'Essential'

datajson = json.dumps(data)

req = requests.post('someurl.com/myendpoint.php',data={'payload':datajson},timeout=3.00)
然后在someurl.com/myendpoint.PHP上的PHP脚本中,我可以使用$\u帖子

$data = json_decode($_POST['payload']);

对于Python请求模块,这是错误的:

requests.post(url, data=nested_dict)
好:


注意:
nested_dict
不需要字符串化。只需将其作为字典传递。

尝试使用
json
而不是
data
,即
requests.post('someurl.com',json=data)
您好,谢谢您的回复。当我尝试这样做时,会出现JSONDECODE错误。你知道我如何检查传递给someurl.com的内容吗?(在PHP中)我尝试了$data=json_解码($_请求),并尝试了$response['content']=$data['source'];echo json_编码($response);但是得到了一个关于
requests.post('someurl.com',json=data.to_dict())
的错误。嗨,对不起,还是没什么。在我尝试过的几乎所有排列中,我的异常都会被抛出。try:req=requests.post('someurl.com',json=data.to_dict(),timeout=3.00)。在我的接收url中,响应只是返回$\u请求或$\u POST,我得到了相同的结果——抛出异常。非常节俭!不幸的是,我个人需要使用
data=
,因为我试图使用表单数据
requests.post(url, json=nested_dict)