requests请求参数data为字典嵌套字典格式时的解决方法

使用requests第三方库的put方法时,发现将参数由字典转化为字符串格式payload = json.dumps(mess),提示参数格式不对; 以字典格式传入时报错。
查看了传入的参数,格式为字典嵌套字典格式
解决方法为:将嵌套的字典用一个参数cour_data保存,然后写组合data的时候将dict转化为字符串(json.dumps(cour_data)),就可以成功发送请求了

# modify_course
# 2021/4/2
from config.Config import HOST
import requests,json
from lib.login import userLogin

def modifyCourse(mess,token):
    # 将字典转化为字符串格式,提示参数格式不对
    # payload = json.dumps(mess)
    # 以字典格式传入,报错
    
    # 因为id会变化,不能写死
    id=mess['id']
    
    #将内嵌套的字典转化为字符串,用参数接收
    cour_data = json.dumps(mess['newdata'])
    # 构造请求的data
    payload = {"action":"modify_course","id":f'{id}',"newdata":f'{cour_data}'}
    
    # 请求头
    head={"Cookie":f"sessionid={token}",
          "Content-Type": "application/x-www-form-urlencoded"}
    res = requests.put(f'{HOST}/XXX/XXX/XXX',data=payload,headers=head)
    
    # 返回json格式的实际请求结果
    return res.json()

if __name__ == '__main__':
    # 获取token
    token = userLogin({"username":"XXX","password":"XXX"},True)
    # 用例里面的请求参数,方便后面pytest框架循环,最好不动格式
    datas = {"action":"modify_course","id":11,"newdata":{ "name":"吧唧吧唧","desc":"梁爸爸","display_idx":"5"}}
    print(modifyCourse(datas,token[1]))

如果有更好的方法的话,欢迎大佬留言~~

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值