2017-01-31 15 views
0

FlaskのBlueprintsを習っていますが、正しいモジュールのインポートに問題があります。これは私の設定です:Flaskの青写真がモジュールをインポートできません

フォルダ構造:

- 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

私は「エラー空でありますm g etting:ImportError: cannot import name nblueprint。私の輸入声明はおそらく間違っているのですが、どうすればよいのでしょうか?

EDIT

私はfrom app import appを削除した場合、私は成功しapp.py.でnblueprintをインポートすることができますしかし、routeを処理する必要があるので、nomad.pyにはappが必要です。なぜその行がインポートに問題を引き起こすのですか?これをどうすれば回避できますか?

答えて

0

Blueprintsはアプリケーションルートを定義するためのものであり、アプリケーションのインスタンスと青写真を同じ場所で使用する必要はありません。

#nomad.py 
@nblueprint.route('/') 

アプリケーションインスタンスを使用すると同時に青写真を登録するとエラーが表示されます。あなたがfrom app ...を取り除くと言ったように、問題を解決します。

ザ・はあなたの例では青写真パッケージにnomadパッケージをその青写真のためのあなたのビューを定義し、それはこのようにする必要があります方法ですお勧めします:

... 
    nomad/ 
     __init__.py 
     views.py 
#nomad/__init__.py 
nblueprint = Blueprint(...) 
#nomad/views.py 
from . import nblueprint 
@nblueprint.route('/') 
... 
関連する問題