2016-09-29 57 views
3

我正在學習燒瓶和python,無法圍繞典型的燒瓶應用程序需要構建的方式纏繞我的頭。燒瓶:如何使用藍圖內的應用程序上下文?

我需要從藍圖內部訪問應用程序配置。像這樣的東西

#blueprint.py 
from flask import Blueprint 

sample_blueprint = Blueprint("sample", __name__) 

# defining a route for this blueprint 
@sample_blueprint.route("/") 
def index(): 
    # !this is the problematic line 
    # need to access some config from the app 
    x = app.config["SOMETHING"] 
    # how to access app inside blueprint? 

如果在blueprint中導入應用程序是解決方案,這是否會導致循環導入?即在應用程序中導入藍圖,在藍圖中導入應用程序?

回答

2

從文檔約appcontext

應用程序上下文是什麼權力CURRENT_APP方面的當地

適用於你的例子:

from flask import Blueprint, current_app 

sample = Blueprint('sample', __name__) 

@sample.route('/') 
def index(): 
    x = current_app.config['SOMETHING'] 

僅供參考這裏一個小的gist我放在一起,如com中所述發言:。

+0

我不能使用current_app,因爲它說沒有應用程序上下文。也許我沒有得到這個權利。我會試着看看是否可以像你提到的那樣去做。 – palerdot

+0

如果我們將藍圖拆分爲單獨的文件,那麼current_app在Blueprint中不適用於我。對我而言,藍圖必須放在一個單獨的文件中,而應用程序則放在一個單獨的文件中。 – palerdot

+1

的要點給了我一個404 –