在烧瓶路线中捕获任意路径

发布于 2021-01-29 16:16:14

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

@app.route('/get_dir/<path>')
def get_dir(path):
    return path
关注者
0
被浏览
46
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

    如果您还想匹配根目录(斜杠和空路径),则可以添加另一个规则,该规则为path参数设置默认值。

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

    还有其他内置转换器,例如intfloat,对于更复杂的情况,也可以编写自己的转换器



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看