【发布时间】:2020-11-24 12:44:24
【问题描述】:
我正在尝试通过 Flask(Python) 将多个 JSON 值从邮递员传递到 PostgreSQL。我可以为单个 JSON 数据执行此操作,但不能为多个值执行此操作。
JSON 数据:
{"users" : [{"username":"empty1","password":"6005"}, {"username":"empty2","password":"6006"}]}
代码:
from flask_restful import Resource, reqparse
from werkzeug.security import safe_str_cmp
from flask_jwt_extended import create_access_token
from model.user import UserModel
import ast
#from idna.core import unicode
#import argparse
user_parser = reqparse.RequestParser()
user_parser.add_argument("username",required=True,location='json')
user_parser.add_argument("password",required=True,location='json')
class UserRegister(Resource):
def post(self):
args = user_parser.parse_args()
args1 = ast.literal_eval(args.username)
print(args1)
list = []
list.append(args1.copy())
print(list[0])
'''if UserModel.find_by_username(data['username']):
return {"message": "A user with that username already exists"}, 400'''
user = UserModel(**args)
user.save_to_db()
return {"message": "User created successfully."}, 201
【问题讨论】:
-
这里有什么错误要补充吗?
-
没有具体错误,但无论我们在 add_argument () 中放入什么,它都会返回一条消息,而无需插入第二个 JSON 数据。
-
不清楚
user_parser是如何从您的列表中提取多个元素以插入数据库的 -
当我执行程序时,我在 postman { "message": { "username": "Missing required parameter in the JSON body" } } 中得到以下结果
-
是的,因为您的解析器仅将
{"users" : []}视为顶级对象。请在调试此代码方面付出一些努力。您的数据库方法只需要单独的 json 对象,或者您必须解析新的 json 对象,并获取数组并对其进行循环