2016-04-27 147 views
-1

在我的Flask項目中,我有一個藍圖,我想要重複使用多個url_prefix -es。儘管如此,藍圖的行爲應該不同於url_prefix燒瓶可配置藍圖

我沒有找到任何辦法來配置藍圖對象,像current_blueprint全局變量,所以我已經考慮多種方法:

  1. 相反的藍圖使用的應用程序不同CONFIGS
  2. 隔離不同的邏輯意見,創建藍圖的觀點的不同組add_url_rule -s
  3. 檢查網址前綴藍圖對象和不同的表現

我應該採用哪種方法?

回答

0

我完全不知道你所說的「不同的行爲」的意思,但如果你能找出共同的邏輯,那麼你可以使用這個:

# In your blueprint file 
def get_blueprint(param): 
    blueprint = Blueprint('my blueprint', __name__) 

    @blueprint.route('/') 
    def index(): 
     return "This is a common page." 

    if param == 'a': 
     @blueprint.route('/param') 
     def param(): 
      return "This is the param a!" 
    elif param == 'b': 
     @blueprint.route('/param') 
     def param(): 
      return "This is the param b!" 

    return blueprint 

# In your app 
app = Flask(__name__) 
app.register_blueprint(get_blueprint('a'), url_prefix='/param/a') 
app.register_blueprint(get_blueprint('b'), url_prefix='/param/b') 

這樣,你能避免做一個if語句對於每個檢查url的請求。

+0

是的,這是我的觀點#2,如果藍圖有很多路線做'@ blueprint.route'會讓'get_blueprint'非常大 – sashab