我有一个简单的Flask路由,我想要捕获一个文件的路径。如果我在规则中使用<path>
,它对/get_dir/one
有效,但对/get_dir/one/two
无效。如何捕获任意路径,以便将path='/one/two/etc
传递给视图函数?
@app.route('/get_dir/<path>')
def get_dir(path):
return path
发布于 2013-02-28 00:41:40
使用path
转换器捕获任意长度的路径:<path:path>
将捕获路径并将其传递给path
参数。默认转换器捕获单个字符串,但仅限于斜杠,这就是为什么您的第一个url匹配而第二个不匹配的原因。
如果您还想匹配根目录(前导斜杠和空路径),您可以为add another rule参数设置默认值。
@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def get_dir(path):
return path
还有其他的built-in converters,比如int
和float
,对于更复杂的情况也可以使用write your own。
https://stackoverflow.com/questions/15117416
复制相似问题