- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用带有路径转换器的简单路径获取 Flask:
@api.route('/records/<hostname>/<metric>/<path:context>')
除非 URL 的“路径”部分使用前导斜杠,否则它会起作用。在这种情况下,我得到了 404。我理解这个错误,但我没有得到的是文档或 Internet 上的任何地方都没有关于如何解决这个问题的解决方法。我觉得我是第一个尝试做这件基本事情的人。
有没有办法让它与有意义的 URL 一起工作?例如这种请求:
http://localhost:5000/api/records/localhost/disks.free//dev/disk0s2
最佳答案
PathConverter
URL converter明确不包括前导斜杠;这是故意的,因为大多数路径不不应该包含这样的斜杠。
参见 PathConverter
source code :
regex = '[^/].*?'
此表达式匹配任何内容,前提是它不是以 /
开头。
你不能对路径进行编码;尝试通过将路径中的斜线编码为 %2F
来使路径中的斜线不是 URL 定界符但不是值的一部分,如果不是所有服务器都在传递 URL 路径之前对其进行解码,则大多数情况下都不会成功到 WSGI 服务器上。
您必须使用不同的转换器:
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 或更新版本并将其保留为默认值,那么多个连续的 /
字符将合并为一个。
注册转换器必须在 Flask app
对象上完成,不能在蓝图上完成。
关于python - 使用带前导斜杠的路径的 Flask 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24000729/
我有一个右下角倾斜的元素,我必须在其上放置一个盒子阴影。有时倾斜的 Angular 被徽章覆盖 - 我的问题不适用,如果是这样的话: 这是信息框及其边 Angular 的 (s)css 部分(还有更多
是否可以在纯 html/css 中创建类似下面的内容? 我想做这个响应式和全 (100%) 宽度(最大左 Angular 100 像素,右边最小 50 像素,类似的东西)。 最佳答案 您可以通过转换(
如何在 fabricjs 文本中为文本提供渐变或斜 Angular 效果?? http://fabricjs.com/fabric-intro-part-2/ 这里给出了形状和所有示例,我将其与文本绑
我用过: http://apps.eky.hk/css-triangle-generator/ 为彼此对 Angular 放置的两个不等边三 Angular 形生成 css: 左下三 Angular
我是一名优秀的程序员,十分优秀!