2014-02-23 124 views
2

在Flask網站中,我想創建一個名爲gallery的藍圖,它是一個lightbox /美術館應用程序,但它有多個實例。例如,如何將構造函數參數傳遞給Flask Blueprint?

app.register_blueprint(gallery,url_prefix='/photos') 
app.register_blueprint(gallery,url_prefix='/paintings') 

不過,我想畫廊的兩個實例擁有完全獨立的內容源,所以需要藍圖一個額外的參數,即

app.register_blueprint(gallery,url_prefix='/photos',source_directory='content/photos/') 
app.register_blueprint(gallery,url_prefix='/paintings',source_directory='content/paintings/') 

如何實現這一點?或者,我可以訪問什麼url_prefix是在藍圖本身?

回答

0

request有幾個屬性可以用來獲取一個Blueprint對象的url_prefix對象。

也許request.script_root就是你想要的。欲瞭解更多信息,推薦使用Flask documentation about request object

2

我不知道,如果瓶實現了這一切WERKZEUG做(瓶是基於WERKZEUG)路由的東西,但在WERKZEUG您可以使用any路線,像這樣:

gallery = Blueprint(__name__, __name__, url_prefix='/<any("photos,paintings"):source>') 

如果您在您的意見中使用@gallery.route,您會得到一個參數source,您可以使用它來確定您的源目錄。

@gallery.route('/show') 
def show(source): 
    # Show stuff based on source being "photos" or "paintings" 

不知道,在瓶的作品,但值得一試...

相關問題