如何在Flask中覆盖静态文件处理器?
具体来说,我想知道如何给“静态”端点分配一个新的处理函数。我知道可以更改 static_folder
和 static_path
,但我特别想给路由映射中指向“静态”端点的任何网址请求分配一个不同的函数。我试过把一个空的 werkzeug.routing.Map
赋值给 <Flask app>.url_map
,但没有成功——当我尝试 add_url_rule
时,仍然出现错误(“视图函数映射正在覆盖现有的端点函数:static
”)。
提前谢谢你。
1 个回答
38
将 static_folder
设置为 None
,这样 Flask 就不会注册这个视图了:
app = Flask(static_folder=None)
现在你可以自由创建你自己的视图了。
另外,你也可以让 static
视图使用一个不同的 URL 路径,并给你的替代视图一个不同的名称:
app = Flask(static_url_path='/flask_static')
@route('/static/<path:filename>')
def my_static(filename):
# ...
Flask 总是会使用 static
作为它创建的视图的名称,所以上面的例子中使用了 my_static
作为替代。