use*_*629 6 python flask flask-admin
我正在将烧瓶管理员添加到预先存在的烧瓶样板项目中。我已经能够在https://github.com/kc1/flask-base (SCREENSHOT) 上运行基本项目。我现在需要添加模型视图来添加基本的 CRUD 功能。为此,我将代码更改为:
adm = Admin(app,name='flaskadmin')
from app.models import User
adm.add_view(ModelView(User, db.session))
Run Code Online (Sandbox Code Playgroud)
你可以看到它有效。但是如果我在 app/init 顶部导入 User 模型和其余的导入,我会得到:
Traceback (most recent call last):
File "...flask-base/manage.py", line 10, in <module>
from app import create_app, db
File "E:\ENVS\r3\flask-base\app\__init__.py", line 17, in <module>
from app.models import User
File "E:\ENVS\r3\flask-base\app\models\__init__.py", line 6, in <module>
from .user import * # noqa
File "E:\ENVS\r3\flask-base\app\models\user.py", line 7, in <module>
from .. import db, login_manager
ImportError: cannot import name 'db'
Run Code Online (Sandbox Code Playgroud)
为什么?
blu*_*onk 18
User
是一个Flask-SQLAlchemy
使用 SQLalchemy 的 API 包装模型的模型。它从一个db
对象继承了它的所有模型,我假设您正在实例化或注册一个create_app
方法。
所以,你应该有这样的东西
db = SQLAlchemy()
def create_app(config):
app = Flask(__name__)
db.init_app(app)
adm = Admin(app,name='flaskadmin')
from app.models import User
adm.add_view(ModelView(User, db.session))
return app
Run Code Online (Sandbox Code Playgroud)
每当您User
从user.py
您导入时db.Model
,基本上都是在导入,这需要db
存在并实际包含数据。警惕Flask 和 Python 中的循环导入。
您收到的错误已在错误回溯中明确说明
File "E:\ENVS\r3\flask-base\app\models\user.py", line 7, in <module>
from .. import db, login_manager
ImportError: cannot import name 'db'
Run Code Online (Sandbox Code Playgroud)
也就是说,在fromuser.py
的导入中db
,../__init__.py
但在该文件中,User
在 的定义之前发生了导入db
。
甲db
对象模拟了declarative
从SQLAlchemy的方法,其中所述对象具有从它继承所有其他类数据。
归档时间: |
|
查看次数: |
13554 次 |
最近记录: |