【发布时间】:2015-09-01 22:04:39
【问题描述】:
我认为问题在于将更改提交到数据库(第 3 行到最后一行:db.session.commit())。以一个用户为例:username="Foo", email="Bar@yahoo.com"。如果在 PUT 请求正文中输入 {"email":"changed@gmail.com"},则在分配后打印 'user.email' 表明该值实际上已更改。然而,之后,在查询数据库时,电子邮件保持不变。无论如何,我真的很难弄清楚我错过了什么,所以任何帮助表示赞赏!
class UserAPI(Resource):
def __init__(self):
self.parser = reqparse.RequestParser()
self.parser.add_argument('username', type=str, location='json')
self.parser.add_argument('email', type=str, location='json')
self.parser.add_argument('password', type=str, location='json')
super(UserAPI, self).__init__()
def put(self, id):
# Not working
user = User.query.filter_by(id=id).first()
if user is not None:
args = self.parser.parse_args()
for key, value in args.items():
if args[key] is not None:
user.key = value
db.session.commit()
return {"user": marshal(user,user_field) }
return {"error": "User not found"}, 404
【问题讨论】:
标签: flask sqlalchemy flask-sqlalchemy put flask-restful