尝试更新数据库条目时收到错误 'Expected bytes'
Recieving the error 'Expected bytes' when trying to update a DB entry
我的 API 允许用户通过向 /User
端点发送 PUT
请求来更新他们的用户详细信息。
但是,当我尝试发送更新时。尝试保存密码时失败 Expected Bytes
.
下面是我的路线:
@UserNS.expect(UserModel)
@token_required
def put(self):
"""Updates the user details associated with the API token."""
token = request.headers['Token']
data = request.get_json()
if not data:
return jsonify({'message': 'Please enter some user data'})
else:
update_user = User.query.filter_by(api_token=token).first()
print("Updating user details")
print("Current: " + update_user.username + " " + update_user.email)
print("New: " + data["Username"] + " " + data["Email Address"])
try:
update_user.username = str(data["Username"])
update_user.email = str(data['Email Address'])
print("Trying to save password...")
update_user.set_password(data['Password'])
print("uh oh...")
db.session.commit()
return {'Message': 'Record updated!'}
except Exception as e:
print(e)
return {'Message': 'Username or email address is invalid!'}
下面是我的API模型:
UserModel = api.model('User', {'Username': fields.String(), 'Email Address': fields.String(), 'Password': fields.String()})
我的 SQLAlchemy 模型:
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True, unique=True)
api_token = db.Column(db.String(50), unique=True)
username = db.Column(db.String(128), index=True, unique=True)
email = db.Column(db.String(128), index=True, unique=True)
password_hash = db.Column(db.String(128))
todos = db.relationship('Todo', backref='owner', lazy='dynamic')
我正在使用非常相似的数据来注册帐户。所以不确定它没有保存新数据。
编辑:我认为问题是 Python 在这里将 update_user
转换为非字节对象:
update_user = User.query.filter_by(api_token=token).first()
所以我需要一种方法来读取以进行查询并将其存储以供操作。不将其转换为非字节对象。
编辑2:
Flask-login
用于使用以下定义存储密码:
def set_password(self, password):
self.password_hash = generate_password_hash(password)
我的 API 允许用户通过向 /User
端点发送 PUT
请求来更新他们的用户详细信息。
但是,当我尝试发送更新时。尝试保存密码时失败 Expected Bytes
.
下面是我的路线:
@UserNS.expect(UserModel)
@token_required
def put(self):
"""Updates the user details associated with the API token."""
token = request.headers['Token']
data = request.get_json()
if not data:
return jsonify({'message': 'Please enter some user data'})
else:
update_user = User.query.filter_by(api_token=token).first()
print("Updating user details")
print("Current: " + update_user.username + " " + update_user.email)
print("New: " + data["Username"] + " " + data["Email Address"])
try:
update_user.username = str(data["Username"])
update_user.email = str(data['Email Address'])
print("Trying to save password...")
update_user.set_password(data['Password'])
print("uh oh...")
db.session.commit()
return {'Message': 'Record updated!'}
except Exception as e:
print(e)
return {'Message': 'Username or email address is invalid!'}
下面是我的API模型:
UserModel = api.model('User', {'Username': fields.String(), 'Email Address': fields.String(), 'Password': fields.String()})
我的 SQLAlchemy 模型:
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True, unique=True)
api_token = db.Column(db.String(50), unique=True)
username = db.Column(db.String(128), index=True, unique=True)
email = db.Column(db.String(128), index=True, unique=True)
password_hash = db.Column(db.String(128))
todos = db.relationship('Todo', backref='owner', lazy='dynamic')
我正在使用非常相似的数据来注册帐户。所以不确定它没有保存新数据。
编辑:我认为问题是 Python 在这里将 update_user
转换为非字节对象:
update_user = User.query.filter_by(api_token=token).first()
所以我需要一种方法来读取以进行查询并将其存储以供操作。不将其转换为非字节对象。
编辑2:
Flask-login
用于使用以下定义存储密码:
def set_password(self, password):
self.password_hash = generate_password_hash(password)