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)
你能告诉我这可能是什么问题吗?
你可能有一个循环导入.这很好,但您需要考虑到您将使用尚未完成所有顶级指令的模块.
如果您有以下代码:
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手册的"较大应用程序"文档部分中的" 循环导入"说明.