Flask提供静态文件,但没有图像

时间:2015-08-04 12:43:18

标签: python flask

我正在尝试从Flask提供静态文件,但是静态文件包含一个未显示的图像。这是我的烧瓶代码:

from flask import Flask

app = Flask(__name__)


@app.route('/')
def index():
    return app.send_static_file("somefile.html")  

if __name__ == '__main__':
    app.run(debug = True)

这是我的html文件" somefile.html"这是在"静态"保存上述代码的目录下的子目录:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
  <div> this is some garbage text </div>
  <img id="ansvg" src="./ppnow.svg">
</body>
</html>

图形处于相同的静态&#34;子目录为somefile.html。

如果我将html文件直接拖到浏览器中,没问题,我得到图形,但如果我运行烧瓶服务器并指向localhost:5000,那么图形不会显示(尽管文本没有)。

发生了什么?谢谢。

1 个答案:

答案 0 :(得分:2)

您正在根网址/下提供HTML页面。然后,浏览器将根据根URL加载所有相对URL。

因此,您的图片将以/ppnow.svg加载,而不是/static/ppnow.sgv

您可以修复图片的链接,也可以使用<base> tag更改基本网址:

<base href="/static/">

请注意,如果没有域名(绝对URL),IE可能会忽略基本标记。