一尘不染

无法在Flask模板中显示来自STATIC_FOLDER的图像

flask

我像这样设置静态文件的文件夹

app.config['STATIC_FOLDER'] = 'tmp'

在模板中,我使用img标签显示存储在/ tmp中的图像:

<img src='IKE2low.jpg' width="200" height="85">

在firebug中,我看到404错误而不是图像。请告诉我我做错了什么?

提前致谢。


阅读 920

收藏
2020-04-07

共1个答案

一尘不染

我不确定STATIC_FOLDER你正在使用什么配置项目。你在哪里找到它?

实际上,Flask类构造函数有两个参数来控制静态文件的配置:

  • static_folder:默认为“静态”。这是你必须在URL中使用的前缀才能访问静态文件。

  • static_url_path:这是静态文件夹的磁盘位置。默认情况下,此值与static_folder设置相同。

例如,如果使用此配置:

from flask import Flask
app = Flask(__name__, static_url_path = "/tmp", static_folder = "tmp")

然后,你可以按以下方式访问图像:

<img src='/tmp/IKE2low.jpg' width="200" height="85">

你还可以删除URL中带有前缀的需要,如下所示:

from flask import Flask
app = Flask(__name__, static_url_path = "", static_folder = "tmp")

然后你可以通过以下方式访问图像:

<img src='/IKE2low.jpg' width="200" height="85">

请注意,你仍然需要有root用户/。

但是,执行此操作的最佳方法是不显式引用图像路径,而是使用url_for其生成正确的URL。如果你使用的是Jinja2模板,则为:

<img src="{{ url_for('static', filename = 'IKE2low.jpg') }}" width="200" height="85">

无论静态文件的位置和配置方式如何,此最后一个表达式都将起作用。

2020-04-07