python - 在Flask框架中同时使用蓝图与Flask_SQLAlchemy
巴扎黑
巴扎黑 2017-04-17 17:51:43
0
1
344

在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进行selectinsert等操作。

全部源码可以在这里找到: https://github.com/Xuanwo/jade-ims

请问是我什么地方搞错了吗?谢谢大家。

巴扎黑
巴扎黑

모든 응답(1)
黄舟

방금 플라스크를 배웠으니 얘기 좀 해보고 싶네요.

install.py

으아악

대체 뭐야? 아마도 첫 번째 실수일 겁니다

models.py

으아악

두 번째 실수여야 합니다. init를 넣으면 먼저 뷰 블루프린트를 등록해야 합니다.

으아악

__init__.py
팩토리 함수를 사용해야 합니다. 인스턴스화가 너무 심합니다

으아악
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿