Ben de flask-mongoengine kullanan benim uygulamada flask-login uygulamak çalışıyorum. Benim giriş görünümünden login_user(user)
işlevini çağırdığınızdaFlask-mongoengine belge kimliği
class User(db.Document, UserMixin):
username = db.StringField(max_length=80)
email = db.StringField(max_length=255, unique=True)
password = db.StringField(max_length=255, required=True)
active = db.BooleanField(default=True)
def __init__(self, *args, **kwargs):
super(db.Document, self).__init__(self)
try:
self.username = kwargs['username']
self.email = kwargs['email']
self.password = kwargs['password']
except:
flash('Bad arguments for User')
@staticmethod
def salt_password(password):
return generate_password_hash(password)
@property
def is_authenticated(self):
return True
@property
def is_active(self):
return self.active
@property
def is_anonymous(self):
return False
def get_id(self):
return unicode(self._id)
def __repr__(self):
return '<User %r>' % (self.username)
def check_pwd(self, password):
return check_password_hash(self.password, password)
Ancak, User
ait get_id
yöntemini çağıran ancak self._id
döner None
: İşte benim kullanıcı proto olduğunu. Aynı sonuçla self.id
'u denedim. Sonra ben explicitely _id
alan eklemek çalıştı:
class User(db.Document, UserMixin):
_id = db.ObjectIdField(default=bson.ObjectId())
ama sonra self._id
yerine bana kullanıcı id 'User u'username'>
verir.
Bir kullanıcının _id
ürününü nasıl alacağına dair bir fikriniz var mı?
sayesinde katma ama hayır, hayır nitelik Ancak :(user_id vardır, ben geçici bir çözüm buldu pymongo yani user._get_collection() ve find_one sorgusunu kullanarak bunu gönderirim ... – GuillaumeA