我已经使用flask创建了一个web应用程序,您可以在其中以文本形式留下便条。如果你留下一个文本,它就会保存在我们的数据库中。但是,只有当您是授权用户时才会发生这种情况,如果您是未经授权的(匿名用户),并且如果您尝试这样做,则无法执行此操作。此时会弹出此错误消息:“anonymoususermixin”对象没有属性“id”。
代码如下:
# home.py
def home():
if request.method == 'POST':
note = request.form.get('note')
if len(note) < 1:
flash('Note is too short!', category='error')
else:
new_note = Note(data=note, user_id=current_user.id)
db.session.add(new_note)
db.session.commit()
flash('Note added!', category='success')
return render_template("home.html", user=current_user)
以及数据库模型:
# models.py
class Note(db.Model):
id = db.Column(db.Integer, primary_key=True)
data = db.Column(db.String(10000))
date = db.Column(db.DateTime(timezone=True), default=func.now())
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(150), unique=True)
password = db.Column(db.String(150))
first_name = db.Column(db.String(150))
confirmed = db.Column(db.Boolean, nullable=False, default=False)
notes = db.relationship('Note')
1条答案
按热度按时间0lvr5msh1#
你正在设置一个
user_id
在创建Note
:显然,匿名用户没有
id
属性,因此必须设置user_id=None
为匿名用户创建便笺或创建默认用户以表示匿名用户和该用户的id
创建注解时。