在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),但是在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 文档。