如何覆盖Flask中的静态文件处理程序?

时间:2014-08-20 19:10:22

标签: python flask

具体来说,如何为“静态”端点分配新的处理程序?我知道我可以更改static_folderstatic_path,但我特别想要分配一个不同的函数来处理路由映射中路由到“静态”端点的任何URL的请求。我尝试将werkzeug.routing.Map分配给<Flask app>.url_map,但无效 - 我在尝试View function mapping is overwriting an existing endpoint function: static时仍然收到错误(“add_url_rule”)。

提前致谢。

1 个答案:

答案 0 :(得分:14)

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代替。