您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Flask路径使用带斜杠的路径

Flask路径使用带斜杠的路径

PathConverterURL转换明确不包括前导斜杠; 因为大部分的路径应该这是故意 包括这样的斜线。

参见PathConverter源代码

regex = '[^/].*?'

该表达式匹配任何 不以开头的内容/

您无法编码路径;%2F 如果不是所有服务器都在将URL路径传递给WSGI服务器之前对其进行解码,则尝试通过将URL编码为URL而不是URL分隔符而不是一部分值来在路径中进行斜杠的转换最多。

您必须使用其他转换器:

import werkzeug
from werkzeug.routing import PathConverter
from packaging import version

# whether or not merge_slashes is available and true
MERGES_SLASHES = version.parse(werkzeug.__version__) >= version.parse("1.0.0")

class EverythingConverter(PathConverter):
    regex = '.*?'

app.url_map.converters['everything'] = EverythingConverter

config = {"merge_slashes": False} if MERGES_SLASHES else {}
@api.route('/records/<hostname>/<metric>/<everything:context>', **config)

注意该merge_slashes选项;如果您安装了Werkzeug 1.0.0或更高版本,并将其保留为认设置,则多个连续/字符将合为一个

注册转换器必须在Flaskapp对象上完成,而不能在蓝图上完成。

Python 2022/1/1 18:47:32 有331人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶