2017-01-31 1 views
0

nicht importieren Ich lerne Blueprints für Flask, aber ich habe Probleme mit dem Importieren der richtigen Module. Das ist mein Setup:Flask Blaupausen können Modul

Ordnerstruktur:

- app.py 
    templates/ 
    nomad/ 
    - __init__.py 
    - nomad.py 

app.py

from flask import Flask 
from nomad.nomad import nblueprint 

app = Flask(__name__) 
app.register_blueprint(nblueprint) 

nomad.py

from flask import render_template, Blueprint, abort 
from app import app 

nblueprint = Blueprint('nblueprint', __name__, template_folder='templates') 

# Routes for this blueprint 
@app.route .... 

__init__.py ist leer

Der Fehler I‘ m g Etting: ImportError: cannot import name nblueprint. Ich weiß, meine Importaussage ist wahrscheinlich falsch, aber was soll es sein und warum?

EDIT:

Wenn ich from app import app entfernen, dann kann ich erfolgreich nblueprint in app.py. importieren Aber ich brauche app in nomad.py, weil es Routen behandeln muss. Warum verursacht diese Linie Probleme beim Importieren und wie würde ich das umgehen?

Antwort

0

Blueprints dienen zum Definieren der Anwendungsroute, sodass Sie die App-Instanz und den Blueprint nicht an derselben Stelle für die Routenbestimmung verwenden müssen.

Sie erhalten einen Fehler, da Sie den Blueprint gleichzeitig mit der App-Instanz registrieren. So wie Sie gesagt haben, wenn Sie die from app ... entfernen, lösen Sie das Problem.

Die empfehlen Art und Weise ist Ihre Meinung zu diesem Plan in Plan-Paket in Ihrem Beispiel nomad Paket zu definieren, sollte es so aussehen:

... 
    nomad/ 
     __init__.py 
     views.py 
#nomad/__init__.py 
nblueprint = Blueprint(...) 
#nomad/views.py 
from . import nblueprint 
@nblueprint.route('/') 
... 
Verwandte Themen