欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【Python】Django框架使用request模块,自定义请求data格式

程序员文章站 2022-03-27 21:20:30
**Django框架使用request模块,自定义请求data格式**目标格式:多条 {“Name”: “String”}从Django数据库中取出数据,例如:Tag,将tag.t_name写入表格 taglist,将所有str拼接好(format_header + format_body + format_tail)记得将str中的单引号强制切换成双引号,否则格式报错此时生成的data格式为str,与最终requests.post要求格式一致,但需要先转换为json再转回str才能正确发送...

**

Django框架使用request模块,自定义请求data格式

**

目标格式:Tags中多条 {“Name”: “String”}
【Python】Django框架使用request模块,自定义请求data格式

从Django数据库中取出数据,例如:Tag,

将tag.t_name写入表格 taglist,将所有str拼接好(format_header + format_body + format_tail)

记得将str中的单引号强制切换成双引号,否则格式报错

此时生成的data格式为str,与最终requests.post要求格式一致,但需要先转换为json再转回str才能正确发送请求,原因不明。如有大神了解,麻烦赐教

tags = Tag.objects.filter(t_alarm=1, t_device_name=device_name)
        print('0')
        # 传输参数,获取流
        ProjectName = 'test'
        url = ip + 'example/example' + '/' + ProjectName
        headers = {"Content-Type": "application/json"}
        # request数据格式,Total指有几个tag
        format_header = '{"Interval":1,"Records":1,"Total":1,"Tags": '
        format_tail = '}'
        
        taglist = []
        for tag in tags:
            name = tag.t_name
            taglistchild = {"Name": str(name)}
            taglist.append(taglistchild)
            
        format_body = str(taglist)
        format = format_header + format_body + format_tail
        format = str(format)
        format = format.replace("'", '"')  # request里必须使用双引号
        data = json.loads(format)   # 必须先将str变成Json
        data = json.dumps(data)    # 再将Json变成str,这样才能被requests模块正确使用
        # 发送带身份验证的post请求
        resp = requests.post(url, headers=headers, data=data, auth=HTTPBasicAuth('admin', ''))
        # print(resp)
        response = resp.content.decode()  # str
        # print(response)
        r_str = json.loads(response)  # dict
        v = jsonpath(r_str, '$.SubscriptionID')  # list

取回数据使用jsonpath,关于jsonpath,详细教程请看:https://www.cnblogs.com/wynjauu/articles/9556396.html

第二天写其他需求时发现了简单的生成tags:{}里要求格式的方法

tag_list = []
    for area in areas:
        dict = {"value": 335}
        name = area.arealog_name
        dict["name"] = name
        tag_list.append(dict)
    response = {
        'data': tag_list,
    }
    return HttpResponse(json.dumps(response))

此时的效果:(dict里应该只有value,此结果为其他需求返回的结果)
【Python】Django框架使用request模块,自定义请求data格式

本文地址:https://blog.csdn.net/Canon_LZ/article/details/110491044

相关标签: Python-Django