该
PathConverterURL转换明确不包括前导斜杠;
因为大部分的路径应该这是故意 不 包括这样的斜线。
参见
PathConverter源代码:
regex = '[^/].*?'
该表达式匹配任何 不以开头的内容/
。
您无法编码路径;
%2F
如果不是所有服务器都在将URL路径传递给WSGI服务器之前对其进行解码,则尝试通过将URL编码为URL而不是URL分隔符而不是一部分值来在路径中进行斜杠的转换最多。
您必须使用其他转换器:
import werkzeugfrom werkzeug.routing import PathConverterfrom packaging import version# whether or not merge_slashes is available and trueMERGES_SLASHES = version.parse(werkzeug.__version__) >= version.parse("1.0.0")class EverythingConverter(PathConverter): regex = '.*?'app.url_map.converters['everything'] = EverythingConverterconfig = {"merge_slashes": False} if MERGES_SLASHES else {}@api.route('/records/<hostname>/<metric>/<everything:context>', **config)
注意该
merge_slashes选项;如果您安装了Werkzeug 1.0.0或更高版本,并将其保留为默认设置,则多个连续
/字符将合为一个。
注册转换器必须在Flask
app对象上完成,而不能在蓝图上完成。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)