TypeError: 'bool' オブジェクトは呼び出し可能ではありません。
今日、flaskの学習中にTypeError: 'bool' object is not callableエラーになりました。後で注意できるように、ここに記録しておきます。
Webで見つけた2つの原因。
1、バージョンバグの原因を考える。[http://blog.csdn.net/thone00/article/details/78194307]
2、is_authenticated はメソッドではなくプロパティです。[http://bbs.csdn.net/topics/391875382]
その理由は、ユーザーモデルはオブジェクトを継承して定義し、is_authenticated, is_active, is_anonymous などの必須属性をカスタマイズし、カスタマイズする際にデコレータを使用しないためです。
カスタムコード
# With flask-login you must implement four fixed methods
# Or just have the user model inherit from the UserMixin class and implement the following four methods by default
def is_authenticated(self):
"""Must return TRUE if the user is logged in"""
return True
def is_active(self):
"""MUST return TRUE if the sequential user is logged in"""
return True
def is_anonymous(self):
"""MUST return False for regular users""""
return False
def get_id(self):
""" must return a unique representation of the user, using the Unicode encoded string """
return self.id
ソースコード
@property
def is_active(self):
return True
@property
def is_authenticated(self):
return True
@property
def is_anonymous(self):
return False
def get_id(self):
try:
return text_type(self.id)
except AttributeError:
raise NotImplementedError('No `id` attribute - override `get_id`')
管理者モデルを flask-login.AnonymousUserMixin を継承して定義する際に、通常のメソッドとして直接使用すると、通常ユーザのログイン時には正常に動作しますが、管理者ユーザのログイン時にはエラーが報告されます。 TypeError: 'bool' オブジェクトは呼び出し可能ではありません。
<未定義Home page display - > class="page-header"> Use the if statement in the template to show the user name if the user is logged in, otherwise show this is the homepage - > {% if current_user.is_authenticated() %} Hello , { { current_user.username }} ! {% else %} Welcome , main Index !!! {% endif %}
<未定義
class A(object): name='sdfs' @property def print_a(self): print('a') def print_b(self): print('b') a = A() a.print_a a.print_b() a.print_a()
<未定義# Or have the user model inherit directly from the UserMixin class, implementing the following four methods by default and using decorations to reach them as properties in the source code @property def is_authenticated(self): """Must return TRUE if the user is logged in""" return True @property def is_active(self): """MUST return TRUE if the sequential user is logged in"""" return True @property def is_anonymous(self): """MUST return False for regular users""" return False
その理由は、以下のように @property デコレーターを使用したメソッドは、通常のメソッドとして呼び出すことができないからです。
class A(object):
name='sdfs'
@property
def print_a(self):
print('a')
def print_b(self):
print('b')
a = A()
a.print_a
a.print_b()
a.print_a()
````
#出力
トレースバック (最も最近の呼び出し):
a
ファイル "D:/Workspace/python/exmple/model_exmples/tmp.py", 行 24, in <module>
b
a.print_a()
a
TypeError: 'NoneType' オブジェクトは呼び出し可能ではありません。
解決策 カスタムモデルをデコレータ付きのソースとして追加し、それを属性で呼び出します。
# Or have the user model inherit directly from the UserMixin class, implementing the following four methods by default and using decorations to reach them as properties in the source code
@property
def is_authenticated(self):
"""Must return TRUE if the user is logged in"""
return True
@property
def is_active(self):
"""MUST return TRUE if the sequential user is logged in""""
return True
@property
def is_anonymous(self):
"""MUST return False for regular users"""
return False
関連
-
Python辞書ループ RuntimeError: 反復中に辞書のサイズが変更されたエラー解析
-
[解決済み] OSError: Pandas の csv でファイルからの初期化に失敗しました。
-
[解決済み] RandomForestRegressor で continuous is not supported エラーが発生した。
-
[解決済み] Djangoです。フォームのメールフィールドは、アドレスがあっても 'this field cannot be null/this field cannot be blank' を返します。
-
[解決済み] np.r_は何をするのですか(numpy)?
-
[解決済み] GPU Sync Failed While using tensorflow(テンソルフロー使用中にGPU同期に失敗した
-
[解決済み] Pythonでdatetime.timeにN秒を追加する標準的な方法は何ですか?
-
[解決済み] 文字列中の母音の有無を確認する
-
[解決済み] scipy curve_fit raises "OptimizeWarning: パラメータの共分散が推定できませんでした" を上げる
-
AttributeError: module 'tensorflow' has no attribute 'ConfigProto'
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】pythonで文字通り何も返さない方法はありますか?
-
[解決済み] ./xx.py: 1行目: import: コマンドが見つかりません。
-
[解決済み] タイプオブジェクト 'datetime.datetime' は属性 'datetime' を持ちません。
-
[解決済み] ユニットテストのassertRaises()をNoneTypeオブジェクトで適切に使用するには?[重複]する
-
[解決済み] バインドパラメーター 0 のエラー: おそらくサポートされていないタイプです。
-
[解決済み] ODBC SQLタイプ -155はまだサポートされていません。
-
[解決済み] タイトルの位置は?
-
エラーです。/usr/bin/python3.6: '__main__' モジュールが '/home/user/object' に見当たりません。
-
python use pivot_table long table to wide table error: 集計解に数値型がない
-
UnicodeDecodeError: 'ascii' コードが位置のバイト 0xef をデコードできない問題を解決しました。