16

私は現在、Flask Mega-Tutorial に取り組んでおり、次のコードに出くわしました。

class User(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    nickname = db.Column(db.String(64), unique = True)
    email = db.Column(db.String(120), unique = True)
    role = db.Column(db.SmallInteger, default = ROLE_USER)
    posts = db.relationship('Post', backref = 'author', lazy = 'dynamic')

    def is_authenticated(self):
        return True

    def is_active(self):
        return True

    def is_anonymous(self):
        return False

    def get_id(self):
        return unicode(self.id)

    def __repr__(self):
        return '<User %r>' % (self.nickname)

is_authenticated、is_active、および is_anonymous は私には非常に奇妙に思えます。定義済みの値以外の値を返すのはいつでしょうか?

Flask-Login がこれらの一見役に立たない方法を使用する理由を誰かが説明してくれませんか?

4

2 に答える 2

9

私はこれに何時間も戸惑いましis_authenticatedis_anonymous。彼らが正反対だったなんて信じられませんでした。最後に、たまたまこの古いブログ記事を見つけました。これは、存在しない変数が に評価される Django テンプレート システムの問題に関するものFalseです。is_anonymousこれは、テンプレート コードでテストするときに間違った動作を引き起こす可能性があります。これまた古いので、使えるかどうかはわかりません。彼らが問題を解決した方法は、作成することでしis_authenticatedた。

Flask-Login は、問題なく Django からモデルをコピーしただけだと思います。これで安心して眠れます。

于 2014-02-19T22:45:30.927 に答える