【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”}
从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,此结果为其他需求返回的结果)
本文地址:https://blog.csdn.net/Canon_LZ/article/details/110491044
上一篇: 第二章-数据类型
下一篇: python 基础语法—函数