我创建了一个小型 Flask 应用程序,目的是在我的本地机器上处理和呈现本地消费的数据。我的 Flask 应用程序处理子文件夹中的数据,然后打开网页显示处理后的数据。一切看起来都很棒,只是没有提供图像。例如,生成的 HTMl 源将具有如下内容:
<img src="/Users/username/Desktop/datafolder/pics/pic1.png" alt="pic1">
但是不会有图像。路径是正确的,所以我猜这与图像在 render_template
中传递或不传递到 Flask 的方式有关。也许有一种方法可以指定媒体目录,正如我在此 django post 中看到的那样?
非常欢迎任何关于我如何能够包含图像的建议。
最好的问候, 扎克cp
编辑:如答案和评论中所述,所有静态文件必须位于指定的静态目录中。我对“file://”构造的使用触发浏览器给出错误消息:
“不允许加载本地资源:file:///Users/username/Desktop/datafolder/pics/pic1.png”
这就是为什么我看不到图像的原因。我可以使用下面的任何解决方案来生成我想要在指定的静态文件夹中提供的图像。
最佳答案
Flask 应用程序将其尝试提供静态文件的文件默认为应用程序根目录中的“静态”路径。因此,如果您在...中运行程序
C:\Users\用户名\Desktop\MyApp
静态文件夹将是
C:\Users\用户名\Desktop\MyApp\Static
因此,当尝试发球时
/Users/用户名/Desktop/datafolder/pics/pic1.png
Flask 将尝试提供的文件实际上是...
C:\Users\用户名\Desktop\MyApp\Static\Users\用户名\Desktop\datafolder\pics\pic1.png
这可能是不对的。
因此,您可以做一些事情:
将正在处理的文件更改为运行 Flask 应用程序的“静态”文件夹,并使 HTML src 值相对于该目录
在 Flask constructor 上设置
static_folder
参数.这允许您专门设置静态文件的服务位置。app = Flask(static_folder='C:\\Some\\Directory')
正如一些评论所建议的那样,更改为使用 file://类型。如果它不起作用,请发布您正在尝试的内容,因为它应该会起作用:)
关于python - flask 不服务图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11596777/