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

Ner*_*osa 16 python flask

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

app.config['STATIC_FOLDER'] = 'tmp'
Run Code Online (Sandbox Code Playgroud)

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

<img src='IKE2low.jpg' width="200" height="85">
Run Code Online (Sandbox Code Playgroud)

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

提前致谢.

Mig*_*uel 34

我不确定STATIC_FOLDER您使用的配置项是什么.你在哪里找到它?

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

  • static_folder:默认为"static".这是您必须在URL中用于访问静态文件的前缀.

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

例如,如果您使用此配置:

from flask import Flask
app = Flask(__name__, static_url_path = "/tmp", static_folder = "tmp")
Run Code Online (Sandbox Code Playgroud)

然后您可以按如下方式访问图像:

<img src='/tmp/IKE2low.jpg' width="200" height="85">
Run Code Online (Sandbox Code Playgroud)

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

from flask import Flask
app = Flask(__name__, static_url_path = "", static_folder = "tmp")
Run Code Online (Sandbox Code Playgroud)

然后您可以访问您的图像:

<img src='/IKE2low.jpg' width="200" height="85">
Run Code Online (Sandbox Code Playgroud)

请注意,您仍需要拥有root /.

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

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

无论静态文件的配置位置和方式如何,最后一个表达式都可以工作.