在Flask路线中捕获任意路径

时间:2013-02-27 16:39:47

标签: python flask werkzeug

我有一个简单的Flask路线,我想要捕获文件的路径。如果我在规则中使用<path>,则适用于/get_dir/one但不适用/get_dir/one/two。如何捕获任意路径,以便将path='/one/two/etc传递给视图函数?

@app.route('/get_dir/<path>')
def get_dir(path):
    return path

1 个答案:

答案 0 :(得分:41)

使用path转换器捕获任意长度路径:<path:path>将捕获路径并将其传递给path参数。默认转换器捕获单个字符串,但以斜杠停止,这就是您的第一个网址匹配但第二个网址不匹配的原因。

如果您还想匹配根目录(前导斜杠和空路径),则可以add another rule设置路径参数的默认值。

@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def get_dir(path):
    return path

还有其他built-in converters,例如intfloat,对于更复杂的案例,也可以write your own