0

问题:当我从除'/'.

我在我的应用程序的文件夹中调用volume.png了一个图像。当我将我的主页路由到使用它时,发现图像很好,当我点击时我可以显示图像。但是当我使用任何其他链接时,例如,它说它无法在. 即使我创建了一个目录并将目录复制到其中,当我输入. 我考虑过使用,但似乎没有太多文档或示例。确保我的路由可以访问静态资源的好方法是什么?staticFlask'/'@app.route('/')localhost:5000/static/images/volume.png'/s's/static/images/volume.pngsstatic404localhost:5000/s/static/images/volume.pngFlask-Assets

4

1 回答 1

2

您需要在 HTML(或 CSS)中限定图像的路径:

<!-- This will break in the way you describe -->
<img src="static/images/volume.png" />

<!-- This will not -->
<img src="/static/images/volume.png" />

<!-- Nor will this (assuming you are using a Jinja template) -->
<img src="{{ url_for('static', filename='images/volume.png') }}" />

这是因为用户代理需要解析 URI 的相对路径的方式(有关详细信息,请参阅 RFC 3968 的第 5.1 节)。

static/images/volume.png在以下路径中使用结果/

scheme://host.name/static/images/volume.png

以及以下内容/s

scheme://host.name/s/static/images/volume.png

正如你所发现的。通过确保path为资源提供绝对组件(至少),您可以确保浏览器将您提供的路径仅scheme与 and合并host.name,而不是与scheme, host.nameand合并path

于 2013-08-16T02:24:46.453 回答