Python Flask如何在HTML页面上显示图片

37

我正在尝试传递一个图片文件的文件名并将其渲染在模板上, 尽管我通过参数传递了实际名称,但它没有显示在页面上。

@app.route('/', methods=['GET','POST'])
@app.route('/start', methods=['GET','POST'])
def start():
person_to_show = 'tim'
profilepic_filename = os.path.join(people_dir, person_to_show, "img.jpg")
return render_template('start.html',profilepic_filename  =profilepic_filename )
例如:profilepic_filename = /data/tim/img.jpg 我已经尝试过
{{profilepic_filename}}
<img src="{{ url_for('data', filename='tim/img.jpg') }}"></img>

而且我也尝试过

<img src="{{profilepic_filename}}"></img>

两者都没有起作用。

1个回答

80
我已经在静态文件夹中创建了people_photo,并放置了名为shovon.jpg的图片。我将图片作为变量传递给模板,并在模板中使用img标签显示它。
application.py中:
from flask import Flask, render_template
import os

PEOPLE_FOLDER = os.path.join('static', 'people_photo')

app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = PEOPLE_FOLDER

@app.route('/')
@app.route('/index')
def show_index():
    full_filename = os.path.join(app.config['UPLOAD_FOLDER'], 'shovon.jpg')
    return render_template("index.html", user_image = full_filename)

index.html文件中:

<!DOCTYPE html>
<html>
<head>
    <title>Index</title>
</head>
<body>
    <img src="{{ user_image }}" alt="User Image">
</body>
</html>

输出结果:

在此输入图片描述


3
还有其他人也遇到了无法工作的问题吗?PyCharm 告诉我Process finished with exit code 0 ,但是localhost:5000 没有显示任何图像。 - Nathan majicvr.com
1
@frank,只要程序保持运行状态,localhost:5000就可用。可能有些东西停止了程序,你会看到 Process finished with exit code 0 - arshovon
2
我们如何从S3链接中显示图像?任何帮助将不胜感激。 - vinit kantrod
1
@vinitkantrod,这不在本问题的范围内。如果您能创建一个关于在Flask中使用S3存储桶图像的新问题,那将更好。我认为未来的读者会受益。 - arshovon
3
有没有一种方法可以使用子文件夹代替静态文件夹,并通过“本地资源”错误? - Bando
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接