将请求体转换为json Django Python



下面是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()

最新更新