2017-02-12 3 views
0

Dies ist, wie meine Ordner und Dateien wie folgt aussehen:ein Attribut aus übergeordnetem Verzeichnis zu importieren

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

und app/__init__.py Datei:

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() 

und app/admin/models.py: habe

Ich mag Zugang zu meinem User Modell in init Datei, von Import from parent directory und import script from a parenet directory Ich habe versucht, from app import * oder from .. import app oder setzen auch db = SQLAlchemy(app) in __init__ Datei und importieren Sie es in models.py mit from app import db oder from .. import db aber ich halte mich app und db immer sind nicht definiert und auch ich denke, es ist seltsam, dass ich beide Datei importieren sollte in gegenseitig.

Antwort

1

Der Fehler ist über Flask-Erweiterungen, während Ihre App sqlalchemy Erweiterung initialisiert wurde nicht, daher verursacht es Fehler. Die beste Vorgehensweise besteht darin, die Erweiterungen am gleichen Ort zu initialisieren:

Wenn Sie dies ändern, wird es funktionieren.

+0

Ich habe das gleiche Problem noch: 'kann Name db nicht importieren – Arman

+0

Der Modellimport sollte nach der Erweiterung sein initialisieren' db = SQLAlchemy (app) '' aus app.admin.models import * ' – metmirr

+0

Jetzt funktioniert es! aber warum DB-Definition sollte vor dem Importieren von Modellen sein? – Arman

Verwandte Themen