如何将构造函数参数传递给 Flask 蓝图



在Flask网站中,我想创建一个名为gallery的蓝图,它是一个灯箱/艺术画廊应用程序,但有多个实例。例如

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吗?

我不确定Flask是否实现了Werkzeug所做的

所有路由(Flask基于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"

不确定这是否适用于 Flask,但值得一试......

request对象的几个属性可用于获取蓝图对象的url_prefix

也许request.script_root就是你想要的。有关详细信息,建议使用有关请求对象的 Flask 文档。

最新更新