无法在Flask中导入LoginManager()

Max*_*Max 5 python login flask

我在我的应用程序中使用Flask BluePrint并且必须使用主要部分:1.Admin和2. Public.当我尝试将loginManager导入到我的views.py文件时,我收到错误ImportError:无法导入名称lm
我的文件夹结构如下:

~/LargeApplication
    |-- run.py
    |-- config.py
    |__ /env             # Virtual Environment
    |__ /app             # Application Module
         |-- __init__.py
         |-- models.py
         |-- /admin
             |-- __init__.py
             |-- views.py                
         |__ /templates
             |-- ..
    |__ ..
    |__ .
Run Code Online (Sandbox Code Playgroud)

我在__ init__ .py文件/ app/__ init__ .py中初始化LoginManager()

from flask.ext.login import LoginManager
lm = LoginManager()
lm.init_app(app)
lm.login_view = 'login'
Run Code Online (Sandbox Code Playgroud)

当我尝试在/app/admin/views.py中导入lm

from app import lm
Run Code Online (Sandbox Code Playgroud)

它引发了ImportError.

ImportError: cannot import name lm
Run Code Online (Sandbox Code Playgroud)

你能告诉我这可能是什么问题吗?

Mar*_*ers 7

你可能有一个循环导入.这很好,但您需要考虑到您将使用尚未完成所有顶级指令的模块.

如果您有以下代码:

from flask.ext.login import LoginManager
from app.admin import admin_blueprint

lm = LoginManager()
lm.init_app(app)
lm.login_view = 'login'
Run Code Online (Sandbox Code Playgroud)

然后app.admin将被导入lm = LoginManager()线路已经执行; app.admin然后尝试解决的任何代码app.lm都将失败.

将蓝图导入向下移动模块,并且lm已经创建:

from flask.ext.login import LoginManager

lm = LoginManager()
lm.init_app(app)
lm.login_view = 'login'

from app.admin import admin_blueprint
Run Code Online (Sandbox Code Playgroud)

请参阅Flask手册的"较大应用程序"文档部分中的" 循环导入"说明.