如何为匿名用户创建db模型?

yb3bgrhw  于 2021-09-08  发布在  Java
关注(0)|答案(1)|浏览(256)

我已经使用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')
0lvr5msh

0lvr5msh1#

你正在设置一个 user_id 在创建 Note :

new_note = Note(data=note, user_id=current_user.id)

显然,匿名用户没有 id 属性,因此必须设置 user_id=None 为匿名用户创建便笺或创建默认用户以表示匿名用户和该用户的 id 创建注解时。

相关问题