-1

Python、Flask-Login、

Flask html からの以下の行

{% if current_user.is_authenticated() %

Ubuntu OS では以下のエラーがスローされ、Windows OS (W7) では正常に動作します。

 File "/home/user/workspace/test/templates/layout.html", line 27, in top-level template code
    {% if current_user.is_authenticated() %}
UndefinedError: 'None' has no attribute 'is_authenticated'
4

1 に答える 1

1

エラーを把握したところ、コンテキスト プロセッサをオーバーライドして修正しました。

login_manager.init_app(app, add_context_processor=False)
@app.context_processor
def login_fix():
    import flask_login
    return dict(current_user=flask_login._get_user() or current_app.login_manager.anonymous_user())

テンプレートのエラーの理由は、元のコンテキスト マネージャー (flask_login.py から) が次のように実装されているためです。

789: def _user_context_processor():
790:     return dict(current_user=_get_user())

ユーザーが見つからない場合、関数_get_userは戻ります。None

于 2013-12-26T17:24:23.300 に答える