22

我创建了一个小型 Flask 应用程序,用于在本地计算机上处​​理和呈现数据以供本地使用。My Flask 应用程序处理子文件夹中的数据,然后打开网页以显示处理后的数据。一切看起来都很棒,只是没有提供图像。例如,生成的 HTMl 源将具有以下内容:

<img src="/Users/username/Desktop/datafolder/pics/pic1.png" alt="pic1"> 

但是不会有图像。路径是正确的,所以我猜这与图像如何传递或不传递给render_template. 也许有一种方法可以指定媒体目录,正如我在这个django 帖子中看到的那样?

任何关于我如何能够包含图像的建议都将非常受欢迎。

最好的问候,扎克cp

编辑:如答案和评论中所述,所有静态文件都必须位于指定的静态目录中。我对“file://”结构的使用触发了浏览器给出错误消息: "Not allowed to load local resource: file:///Users/username/Desktop/datafolder/pics/pic1.png" 这就是我看不到图像的原因。我可以使用下面的任何解决方案来生成我想要在指定静态文件夹中提供的图像。

4

3 回答 3

24

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 构造函数上设置static_folder参数。这允许您专门设置静态文件的提供位置。

    app = Flask(static_folder='C:\\Some\\Directory')
    
  3. 正如一些评论所建议的,更改为使用 file:// 类型。如果它不起作用,请发布您正在尝试的内容,因为它应该可以工作:)

于 2012-07-22T07:06:05.613 回答
21

好吧,你最好看看这个: 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">在您的模板中使用。

于 2012-07-22T09:16:18.943 回答
0

Flask 应用程序将尝试提供静态文件的文件默认为应用程序根目录中的“静态”路径。

创建静态文件夹并在其中粘贴图像并将路径指定为 \Static\Img.png

于 2022-01-02T04:47:58.053 回答