Rumah > Soal Jawab > teks badan
在Flask框架中同时使用蓝图与Flask_SQLAlchemy
遇到了循环导入的问题。
目录结构如下:
.
├── jade_ims
│ ├── __init__.py
│ ├── models.py
│ └── views
│ ├── home.py
│ ├── __init__.py
│ └── install.py
└── run.py
跟代码无关的部分均已去除,run.py
只是单纯调用app.run()
jade_ims
目录下的__init__.py
文件的导入部分如下:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from jade_ims.views.home import home
from jade_ims.views.install import install
models.py
的导入部分如下:
from jade_ims import db
views
目录下的install.py
导入部分如下:
from flask import Blueprint, render_template, g
from jade_ims.models import User
报错提示如下:
Traceback (most recent call last):
File "/mnt/Data/Code/jade-ims/run.py", line 1, in <module>
from jade_ims import app
File "/mnt/Data/Code/jade-ims/jade_ims/__init__.py", line 9, in <module>
from jade_ims.views.install import install
File "/mnt/Data/Code/jade-ims/jade_ims/views/install.py", line 2, in <module>
from jade_ims.models import User
File "/mnt/Data/Code/jade-ims/jade_ims/models.py", line 1, in <module>
from jade_ims import db
ImportError: cannot import name 'db'
我的需求时想要在视图中直接操作db
进行select
,insert
等操作。
全部源码可以在这里找到: https://github.com/Xuanwo/jade-ims
请问是我什么地方搞错了吗?谢谢大家。
黄舟2017-04-17 17:53:43
Saya baru belajar kelalang, jadi saya hanya mahu bercakap mengenainya.
pasang.py
from jade_ims import app
Apa kejadahnya? Mungkin kesilapan pertama
models.py
from jade_ims import db
Ini adalah kesilapan kedua. Instalasi db harus diletakkan di sini >
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
__init__.pyAnda harus menggunakan fungsi kilang
from flask import Flask
from werkzeug.utils import import_string
from config import config
from models import db
bps = ['jade_ims.views.home:home',
'jade_ims.views.install:install'
]
def create_app():
app = Flask(__name__)
app.config.from_object('config')
db.init_app(app)
for path in bps:
bp = import_string(path)
app.register_blueprint(bp)
return app