下面是python Django中的一个视图,它给出了的输出
代码
@csrf_exempt
def stk_push_callback(request):
data = request.body
print(data)
got_data = json.loads(data.decode("utf-8"))
result_code = got_data['Body']['stkCallback']['ResultCode']
result_desc = got_data['Body']['stkCallback']['ResultDesc']
print(' ')
print('ResultCode: ', result_code)
print(result_desc)
print(' ')
room = room_val()
check_in = in_val()
check_out = out_val()
user = user_val()
if result_code == 0:
booking = book_room(user, room, check_in, check_out)
print (booking)
return render(request, 'booking/paymentcomplete.html')
else:
return render(request, 'booking/paymenterror.html')
输出print(data)
b'{"Body":{"stkCallback":{"MerchantRequestID":"9088-17223944-1","CheckoutRequestID":"ws_CO_310520212138262746","ResultCode":1032,"ResultDesc":"Request cancelled by user"}}}'
如何将输出转换为json,以及如何访问"ResultCode":1032
值以进行进一步处理?当做
我在打电话,很难解释更多。
import json
data = request.body
data_dict = json.loads(data.decode("utf-8"))
print(data_dict['Body']['stkCallback']['ResultCode'])
有关详细信息,请查看如何将字节类型转换为字典?答复
您实际上离解决方案不远了。
request.post
通过html表单处理邮件数据
而request.body
提供了一个原始HTTP请求体作为字节串。您可以使用json.loads()
将其转换为词典。
我使用了got_data = json.loads(data)
,它如预期的那样工作。
data
被转换为Python字典,因此您可以对其进行与dict相关的操作,
result_code = got_data['Body']['stkCallback']['ResultCode']
这里有更详细的博客文章。
如果您使用GET
方法,您可以执行此
exm.html
<input type="text" name="test1" >
视图.py
test1 = request.GET["test1"]
dataJson = json.dumps({"test1":test1})
如果使用POST
方法你可以做这个
from urllib.parse import unquote
import json
data = request.body
data = str(data, encoding='utf-8')
data = unquote(data)
data = json.loads(data)
使用json()
方法。
data = request.json()