我正在尝试使用 Flask-Mongoengine 和 Flask-Login 为应用编写授权代码。我收到了这个奇怪的错误:
File "/usr/lib/python3.5/site-packages/mongoengine/base/document.py", line 188, in __setattr__
super(BaseDocument, self).__setattr__(name, value)
File "/usr/lib/python3.5/site-packages/mongoengine/base/fields.py", line 132, in __set__
if instance._initialised:
AttributeError: _initialised
我的模型.py:
from app import app, db
from flask.ext.login import LoginManager
login_manager = LoginManager()
login_manager.init_app(app)
class User(db.Document):
email = db.StringField(required=True)
first_name = db.StringField(max_lenght=40, required=True)
last_name = db.StringField(max_lenght=40, required=True)
password = db.StringField(required=True)
def __init__(self, email, first_name, last_name, password):
self.email = email
self.first_name = first_name
self.last_name = last_name
self.password = password
def is_authenticated(self):
return True
def is_active(self):
return True
def is_anonymous(self):
return False
def get_id(self):
return self.email
我试过超越类(class),但没有帮助。
最佳答案
Mongoengine 不需要您定义 __init__。
class User(db.Document):
email = db.StringField(required=True)
first_name = db.StringField(max_lenght=40, required=True)
last_name = db.StringField(max_lenght=40, required=True)
password = db.StringField(required=True)
def clean(self):
# clean will be called when you call .save()
# You can do whatever you'd like to clean data before save
self.password = str(self.password)
那么你所要做的就是
user = User(email='email@gmail', first_name='hello', last_name='there', password=2342143213)
user.save()
print(user.id)
关于python - Mongoengine 属性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38363726/