2017-02-12 91 views
0

这是我的文件夹和文件的样子:进口从父目录的属性

/app 
    __init__.py 
    /admin 
     __init__.py 
     models.py 

app/__init__.py文件:

from flask import Flask 
from flask_sqlalchemy import SQLAlchemy 
from app.admin.models import * 


app = Flask('app') 

@app.route('/users', methods=['GET']) 
def show_users(): 
    return "list of all Users:\n" + User.query.limit(5).all() 

app/admin/models.py

我想有访问init文件中我的User模型,从Import from parent directoryimport script from a parenet directory我试图from app import *from .. import app或也把db = SQLAlchemy(app)__init__文件,并from app import dbfrom .. import db它导入models.py但我不断收到appdb没有定义,我也认为这是奇怪的,我应该在导入这两个文件彼此。

回答

1

错误是关于Flask扩展,而您的应用程序创建的sqlalchemy扩展没有初始化,因此它会导致错误。最好的做法是保持扩展初始化在同一个地方:

#app/__init__.py 
... 
db = SQLAlchemy(app) 
from app.admin.models import * 

#app/admin/models.py 
... 
from app import db 

如果你做到这一点的变化,它会工作。

+0

我还有同样的问题:'无法导入名称db' – Arman

+0

模型导入应该在扩展后从app.admin.models导入*' – metmirr

+0

初始化'db = SQLAlchemy(app)''现在它可以工作!但为什么数据库定义应该在导入模型之前? – Arman