Python 捕获路由中的任意路径

Python 捕获路由中的任意路径,python,flask,werkzeug,Python,Flask,Werkzeug,我有一个简单的烧瓶路径,我想捕获一个文件的路径。如果我在规则中使用,它适用于/get\u dir/one,但不适用于/get\u dir/one/two。如何捕获任意路径,以便将path='/one/two/etc传递给view函数 @app.route('/get_dir/<path>') def get_dir(path): return path @app.route('/get_dir/')) def get_dir(路径): 返回路径 使用路径转换器捕获任意长度的

我有一个简单的烧瓶路径,我想捕获一个文件的路径。如果我在规则中使用
,它适用于
/get\u dir/one
,但不适用于
/get\u dir/one/two
。如何捕获任意路径,以便将
path='/one/two/etc
传递给view函数

@app.route('/get_dir/<path>')
def get_dir(path):
    return path
@app.route('/get_dir/'))
def get_dir(路径):
返回路径

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

如果还希望匹配根目录(前导斜杠和空路径),则可以选择为path参数设置默认值

@app.route('/', defaults={'path': ''})
@app.route('/<path:path>')
def get_dir(path):
    return path
@app.route('/',默认值={'path':''})
@应用程序路径(“/”)
def get_dir(路径):
返回路径

还有其他的方法,比如
int
float
,对于更复杂的情况,也可以这样做。

对于那些不起作用的方法,请确保删除静态url路径,我有点担心您必须为根添加另一个规则。简单地说,变量部分不能是空字符串吗?@BobStein我迟到了,但请注意,的源代码将匹配路径的正则表达式定义为
[^/].*?
。开头的
[^/]
表示它至少需要一个非斜杠字符,之后可以选择出现任何其他字符(包括斜杠)。如果只是因为“索引页”是一个非常常见的概念,并且匹配URL中的空字符串不是我见过(或想要)的行为,我会期待这种行为。非常感谢“路径”正是我所需要的。