我正在使用flask设置本地服务器。我目前要做的就是使用index.html页面中的img标签显示图像。但我一直在错误
GET http://localhost:5000/
ayrton_senna_movie_wallpaper_by_bashgfx-d4cm6x6.jpg 404 (NOT FOUND)
烧瓶在哪里寻找文件?一点帮助都会很棒。 我的HTML代码是
<html>
<head>
</head>
<body>
<h1>Hi Lionel Messi</h1>
<img src= "ayrton_senna_movie_wallpaper_by_bashgfx-d4cm6x6.jpg ">
</body>
</html>
我的python代码是:
@app.route('/index', methods=['GET', 'POST'])
def lionel():
return app.send_static_file('index.html')
答案 0 :(得分:51)
您static
目录中的图片文件是ayrton_senna_movie_wallpaper_by_bashgfx-d4cm6x6.jpg吗?如果将其移动到静态目录并按此更新HTML:
<img src="/static/ayrton_senna_movie_wallpaper_by_bashgfx-d4cm6x6.jpg">
它应该有用。
另外,值得注意的是,有一种更好的方法来构建它。
文件结构:
app.py
static
|----ayrton_senna_movie_wallpaper_by_bashgfx-d4cm6x6.jpg
templates
|----index.html
app.py
from flask import Flask, render_template, url_for
app = Flask(__name__)
@app.route('/index', methods=['GET', 'POST'])
def lionel():
return render_template('index.html')
if __name__ == '__main__':
app.run()
模板/ index.html中
<html>
<head>
</head>
<body>
<h1>Hi Lionel Messi</h1>
<img src="{{url_for('static', filename='ayrton_senna_movie_wallpaper_by_bashgfx-d4cm6x6.jpg')}}" />
</body>
</html>
这样做可以确保您不会对静态资产的URL路径进行硬编码。
答案 1 :(得分:13)
使用图像实际存在的绝对路径 (例如)'/ home /artitra/pictures/filename.jpg'
或在项目目录中创建静态文件夹,如下所示
| templates
- static/
- images/
- yourimagename.jpg
然后这样做
app = Flask(__name__, static_url_path='/static')
然后您可以在 index.html
中访问您的图片src ="/static/images/yourimage.jpg"
in img tag
答案 2 :(得分:7)
动态Web应用程序还需要静态文件。那通常是在哪里 CSS和JavaScript文件来自。理想情况下您的Web服务器 配置为您服务,但在开发过程中Flask可以 也这样做。只需在您的包中创建一个名为
static
的文件夹或 在您的模块旁边,它将在/static
上提供 应用要生成静态文件的URL,请使用特殊的
'static'
端点 名:url_for('static', filename='style.css')
该文件必须作为
static/style.css
存储在文件系统中。
答案 3 :(得分:2)
我花了一段时间来解决这个问题。 Flask中的url_for
查找您在routes.py
脚本中指定的端点。
因此,如果您的routes.py
文件中有装扮器,例如@blah.route('/folder.subfolder')
,则Flask会识别命令{{ url_for('folder.subfolder') , filename = "some_image.jpg" }}
。 'folder.subfolder'
参数将其发送到它识别的Flask端点。
但是,我们假设您已将图像文件some_image.jpg
存储在子文件夹中,但未将此子文件夹指定为烧录routes.py
中的路径端点,您的路径装饰器看起来像{{ 1}}。然后,您必须以这种方式询问您的图像文件:
@blah.routes('/folder')
即。你告诉Flask去它知道的端点“文件夹”, 然后通过将子目录路径放在filename参数中来引导它。
答案 4 :(得分:-2)
为了在flask中导入图像,你需要一个名为static的子文件夹到文件夹中,保留你的img
进入你的html文件并写入