2017-02-12 60 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