我创建了一个小型Flask应用程序,用于在本地计算机上处理和显示本地消费数据。我的Flask应用程序处理子文件夹中的数据,然后打开一个网页以显示已处理的数据。除了不提供图像外,一切看起来都很棒。例如,生成的HTMl源代码如下:
<img src="/Users/username/Desktop/datafolder/pics/pic1.png" alt="pic1">
然而,没有图像。路径是正确的,所以我猜它是如何将图像传递或传递给render_template
中的Flask的。也许有一种方法来指定媒体目录,正如我在django post中看到的那样?
对于我如何能够包含图像的任何建议都将非常受欢迎。
最好的问候, zach cp
编辑:如答案和评论中所述,所有静态文件必须位于指定的静态目录中。我使用“file://”构造触发浏览器给出错误消息:
"Not allowed to load local resource: file:///Users/username/Desktop/datafolder/pics/pic1.png"
这就是我无法看到图像的原因。我可以使用下面的任何解决方案,导致我想要在指定的静态文件夹中提供的图像。
答案 0 :(得分:17)
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 constructor上设置static_folder
参数。这允许您专门设置静态文件的提供位置。
app = Flask(static_folder='C:\\Some\\Directory')
正如一些评论建议的那样,更改为使用file:// type。如果它不起作用,那么发布您正在尝试的内容,因为它应该有效:)
答案 1 :(得分:10)
嗯,你最好看看这个:http://flask.pocoo.org/docs/quickstart/#static-files 你需要做什么:
cd path/to/your/flask/app
mkdir static
mv /Users/username/Desktop/datafolder/pics/pic1.png /static
在模板中使用<img src="/static/pic1.png" alt="pic1">
。