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

时间:2013-07-20 16:18:52

标签: python flask

我为这样的静态文件设置了文件夹

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

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

中的图像
<img src='IKE2low.jpg' width="200" height="85">

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

提前致谢。

1 个答案:

答案 0 :(得分:30)

我不确定您使用的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">

请注意,您仍需要拥有根/

但最好的方法是不要明确引用图像路径,而是使用url_for生成正确的URL。如果您使用的是Jinja2模板:

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

无论静态文件的配置位置和方式如何,最后一个表达式都能正常工作。