小白新手,使用request.get_data()獲得post上來的資料,用get取字典的值,目前能獲得post上來的資料,但是字典取不了key值,提示 msg_dict = sms_cord.get("msg")
AttributeError: 'bytes' object has no attribute 'get'
后端之前除錯都是正常的,突然成了這樣,不知道什么原因。
from flask import Flask,request,Response
import json
import base64
#import pymysql
#Flask框架核心功能
app = Flask(__name__)
#conn = pymysql.connect('localhost',user = "root",password ="deng@828416",db = "sms_data")
#cursor = conn.cursor()
#cursor.execute('use sms_data;')
#post引數,路徑最后面加"/",不然會默認get方式
@app.route('/api/msg/',methods=["GET","POST"])
def test1():
# request.get_json 獲取Json 資料
sms_cord = request.get_data()
print("sms_data:" + format(sms_cord))
sms_cord_sms = type(sms_cord)
print(type(sms_cord_sms))
# 通過字典中get獲取指定專案中指定引數
msg_dict = sms_cord.get("msg")
src_dict = sms_cord.get("src")
submitDate_dict = sms_cord.get("submitDate")
messageId_dict = sms_cord.get("messageId")
dest_dict = sms_cord.get("dest")
#使用base64模塊 解碼資料
new_src = base64.b64decode(src_dict.encode('utf-8')).decode("utf-8")
new_msg = base64.b64decode(msg_dict.encode('utf-8')).decode("utf-8")
new_dest = base64.b64decode(dest_dict.encode('utf-8')).decode("utf-8")
print("msg:"+str(msg_dict))
print("src:"+str(src_dict))
print("submitDate:"+str(submitDate_dict))
print("messageId:"+str(messageId_dict))
print("dest:"+str(dest_dict))
#回傳值
result={
"result":"0000"
}
除錯列印:
sms_data:b'{"msg": "44CQVEXjgJE86Im66b6ZPumqjOivgeeggTk3MzA5NeeUqOS6juazqOWGjC/nmbvlvZXkuKrkurrotKblj7fnrYksNeWIhumSn+WGheacieaViCzoibrpvpnlt6XkvZzkurrlkZjmiJblkIjkvZzllYbmiLfkuI3kvJrlkJHmgqjntKLopoHpqozor4HnoIEs6K+35Yu/5ZCR5Lu75L2V5Lq65rOE6Zyy", "src": "MTA2OTEyNDY1NzM5MQ==", "submitDate": "20200421171245", "messageId": "1356220045", "dest": "MTMwNDA3OTQyNjI="}'
<class 'type'>
192.168.5.119 - - [23/Apr/2020 10:28:50] "POST /api/msg/ HTTP/1.1" 500 -
Traceback (most recent call last):
File "E:\PycharmProjects\venv\lib\site-packages\flask\app.py", line 2464, in __call__
return self.wsgi_app(environ, start_response)
File "E:\PycharmProjects\venv\lib\site-packages\flask\app.py", line 2450, in wsgi_app
response = self.handle_exception(e)
File "E:\PycharmProjects\venv\lib\site-packages\flask\app.py", line 1867, in handle_exception
reraise(exc_type, exc_value, tb)
File "E:\PycharmProjects\venv\lib\site-packages\flask\_compat.py", line 39, in reraise
raise value
File "E:\PycharmProjects\venv\lib\site-packages\flask\app.py", line 2447, in wsgi_app
response = self.full_dispatch_request()
File "E:\PycharmProjects\venv\lib\site-packages\flask\app.py", line 1952, in full_dispatch_request
rv = self.handle_user_exception(e)
File "E:\PycharmProjects\venv\lib\site-packages\flask\app.py", line 1821, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "E:\PycharmProjects\venv\lib\site-packages\flask\_compat.py", line 39, in reraise
raise value
File "E:\PycharmProjects\venv\lib\site-packages\flask\app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "E:\PycharmProjects\venv\lib\site-packages\flask\app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "E:\PycharmProjects\http_server.py", line 28, in test1
msg_dict = sms_cord.get("msg")
AttributeError: 'bytes' object has no attribute 'get'
uj5u.com熱心網友回復:
找到問題了,request.get_data() 獲取的是字串,json.loads轉字典uj5u.com熱心網友回復:
恭喜樓主,賀喜樓主!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/55724.html
