烧瓶不提供图片

时间:2012-07-22 00:06:03

标签: python html flask

我创建了一个小型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" 这就是我无法看到图像的原因。我可以使用下面的任何解决方案,导致我想要在指定的静态文件夹中提供的图像。

2 个答案:

答案 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

这可能不对。

因此,您可以做一些事情:

  1. 将正在处理的文件更改为运行Flask应用程序的“静态”文件夹,并将HTML src值设置为相对于该目录

  2. Flask constructor上设置static_folder参数。这允许您专门设置静态文件的提供位置。

    app = Flask(static_folder='C:\\Some\\Directory')
    
  3. 正如一些评论建议的那样,更改为使用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">

相关问题