下面是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
值以进行进一步处理?
3条答案
按热度按时间esbemjvw1#
我是电话部的,很难再解释了。
有关详细信息,请查看How to convert bytes type to dictionary?答案。
7hiiyaii2#
使用
json()
方法。bq3bfh9z3#
实际上,你离解决问题不远了。
request.post
通过html表单处理post数据。request.body
以字节串的形式提供了原始的HTTP请求主体,您可以使用json.loads()
将其转换为字典。我用的是
got_data = json.loads(data)
,效果和预期的一样。data
被转换成Python字典,所以你可以在它上面做与字典相关的操作,result_code = got_data['Body']['stkCallback']['ResultCode']
More detailed blog post here.