2016-04-27 141 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