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

标签 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']['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);

问题是试图访问嵌套字典中的数据。我不知道当它到达 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);

当在模板中打印出响应时,嵌套部分会出现内容......

非常感谢任何帮助!

更新

我已经尝试了很多排列,但仍然很挣扎!我只需要能够将嵌套字典(或 json)传递到我的接收网址“someurl.com”,并能够在 PHP 中对其进行(json)解码,例如 $d = json_decode($_POST)

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

dat = json.dumps(data)
req = requests.get('someurl.com',params=dat)

尝试使用 requests.post 时,如果我传递原始字典或将其转换为 json,我将无法执行任何操作。

非常感谢

最佳答案

对于 Python requests 模块来说,这是不好的:

requests.post(url, data=nested_dict)

好:

requests.post(url, json=nested_dict)

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

关于python - 将嵌套字典传递给请求模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48193316/

相关文章:

python - 无法安装 Pyhook Python 3.8.1

python - 使用 numpy 计算滚动加权和

python - 带有附加参数的表单的 __init__ 方法

python - 获取模型对象时如何默认返回image.url?

python - XHR 请求在 Scrapy 中失败,但在 python-requests 中有效

python - django - 不立即保存到数据库

python - 从标记数据中选择多种元素类型的更多 pythonic 方法

python - 如何从一组子实例中获取所有相关/父实例而不循环遍历后一组

python - 在特定时间戳上调用 python 函数

python - 轻松升级 Requests 的 urllib3 版本?