web-dev-qa-db-ja.com

TypeError: 'bool'オブジェクトは呼び出せませんg.user.is_authenticated()

Flaskアプリケーションでこれを実行しようとしていますが、次のようなエラーが発生します

TypeError: 'bool' object is not callable. 

対応するコードは次のとおりです。

@app.before_request
def before_request():
    g.user = current_user
    if g.user.is_authenticated():
       g.search_form = None
14
Dopant Prashant

if g.user.is_authenticated():if g.user.is_authenticated:に次のように置き換えてみてください。

@app.before_request
def before_request():
    g.user = current_user
    if g.user.is_authenticated:
       g.search_form = None

から ドキュメント

is_authenticated

ユーザーが認証されている場合、つまりユーザーが有効な資格情報を提供している場合は、Trueを返します。 (認証されたユーザーのみがlogin_requiredの基準を満たします。)

ドキュメントに記載されているように、is_authenticatedはブール値(TrueまたはFalse)です。

ただし、これは過去の関数でしたただし、バージョン3.0ではブール値に変更されています

速報:
is_authenticatedis_active、およびis_anonymous
ユーザークラスのメンバーは、メソッドではなくプロパティになりました。アプリケーションは、それに応じてユーザークラスを更新する必要があります。

32
Kevin Guan

それの訳は is_authenticatedは関数ではなく、単なるブール値です。代わりに次を試してください。

@app.before_request
def before_request():
    g.user = current_user
    if g.user.is_authenticated:
       g.search_form = None
4
Games Brainiac