我创建了一个小型 Flask 应用程序,目的是在我的本地机器上处理和呈现本地消费的数据。我的 Flask 应用程序处理子文件夹中的数据,然后打开网页显示处理后的数据。一切看起来都很棒,只是没有提供图像。例如,生成的 HTMl 源代码将类似于:
<img src="/Users/username/Desktop/datafolder/pics/pic1.png" alt="pic1">
但是不会有图像。路径是正确的,所以我猜它与图像如何传递或不传递到 render_template
中的 Flask 有关。也许有一种方法可以指定媒体目录,正如我在这篇 Django 帖子 中看到的那样?
任何关于我如何能够包含图像的建议都将非常受欢迎。
最好的问候,zach cp
编辑:如答案和评论中所述,所有静态文件必须位于指定的静态目录中。我使用“file://”构造触发浏览器给出错误消息: "Not allowed to load local resource: file:///Users/username/Desktop/datafolder/pics/pic1.png"
这就是我看不到图像的原因。我可以使用下面的任何解决方案来生成我想要在指定静态文件夹中提供的图像。
原文由 zach 发布,翻译遵循 CC BY-SA 4.0 许可协议
Flask 应用程序将它尝试提供静态文件的文件默认为应用程序根目录中的“静态”路径。因此,如果你运行你的程序……
C:\Users\username\Desktop\MyApp
静态文件夹将是
C:\Users\username\Desktop\MyApp\Static
因此,当试图服务
/Users/username/Desktop/datafolder/pics/pic1.png
Flask 将尝试提供的文件实际上是…
C:\Users\username\Desktop\MyApp\Static\Users\username\Desktop\datafolder\pics\pic1.png
这恐怕是不对的。
因此,您可以做几件事:
将正在处理的文件更改为运行 Flask 应用程序的“静态”文件夹,并使 HTML src 值相对于该目录
在 Flask 构造 函数上设置
static_folder
参数。这允许您专门设置从何处提供静态文件。