ビューでis_authenticated()
を使用しようとしましたが、エラー `TypeError: 'bool' object is not callableが発生しました。このエラーが発生する理由と修正方法を教えてください。
@auth.before_app_request
def before_request():
if current_user.is_authenticated() \
and not current_user.confirmed \
and request.endpoint[:5] != 'auth.' \
and request.endpoint != 'static':
return redirect(url_for('auth.unconfirmed'))
オブジェクトがメソッドまたは関数のように動作しようとすると、「オブジェクトは呼び出し不可能」エラーが発生します。
この場合:
current_user.is_authenticated()
current_user.is_authenticatedはメソッドとして動作しますが、メソッドとしては動作しません。
このように使用する必要があります:
current_user.is_authenticated
オブジェクトではなく、メソッドまたは関数の後に「()」を使用します。
場合によっては、クラスが__call__
関数もオブジェクトを呼び出すことができ、それから呼び出し可能になります。
Flask-Login 0.3. (2015年9月10日リリース)変更から:
- BREAKING:
is_authenticated
、is_active
、およびis_anonymous
ユーザークラスのメンバーは、メソッドではなくプロパティになりました。それに応じて、アプリケーションはユーザークラスを更新する必要があります。
したがって、user
クラスを変更し、それに応じてコーディングする必要があります。