Python MongoEngine-仅在创建文档或设置特定字段时调用函数?
我不确定让用户文档在创建时自动散列其密码的最佳方式是什么 考虑以下mongoengine模型:Python MongoEngine-仅在创建文档或设置特定字段时调用函数?,python,mongoengine,flask-mongoengine,Python,Mongoengine,Flask Mongoengine,我不确定让用户文档在创建时自动散列其密码的最佳方式是什么 考虑以下mongoengine模型: class User(Document): email = EmailField(required=True, primary_key=True) name = StringField(required=True) pswd = StringField(required=True) def check_pswd(self, password): ret
class User(Document):
email = EmailField(required=True, primary_key=True)
name = StringField(required=True)
pswd = StringField(required=True)
def check_pswd(self, password):
return verify_password(password, self.pswd)
def hash_pswd(self, password):
return hash_password(password):
def save(self, *args, **kwargs):
self.pswd = self.hash_pswd(self.pswd)
super().save(*args, **kwargs)
创建用户时,它工作正常:
user = User()
user.email = 'user@email.com'
user.pswd = 'password'
user.name = 'User'
user.save()
Buf如果我更新它,它会加倍散列它的密码,我不想那样
#User wants to change his name
user = User.objects(email='user@email.com')
user.name = 'User 2'
user.save()
只有在创建或更改密码时,我才能散列其密码吗
或者我应该将密码散列的责任委托给视图/控制器?我没有给您代码示例,您可以使用Document.update()方法来更新仅已更改的字段 如果你还想使用save方法, 然后,您可以沿着以下几行创建一个逻辑
我不知道save被弃用了,文档中的教程都在使用save。我坚持使用官方的mongodb python驱动程序来避免这样的意外。没关系,我知道怎么做。这里的Mongoengine维护人员“save”一点也不弃用!!我只是修改了上面的帖子以避免混淆,我建议你在我上面提到的链接上给我一个惊喜,以澄清问题