我正在尝试使用 Flask 在我的网站上显示图像。我有一个 for 循环,它迭代在“静态”目录中找到的图像,但我也想在图像底部显示图像的名称。目前图像的名称显示为“image.jpg”,但我希望删除“.jpg”。知道我该怎么做吗?
这是我的app.py
from flask import Flask, render_template, flash, url_for
import os
app = Flask(__name__)
@app.route('/')
def hello_world():
return render_template("home.html")
@app.route('/select.html')
def select():
imagelist = os.listdir(os.path.join(app.static_folder,"images"))
return render_template("select.html", imagelist=imagelist)
@app.route('/versus.html')
def versus():
return render_template("versus.html")
if __name__ == '__main__':
app.run(host='0.0.0.0',debug=True)
这是 html 模板,其中有 for 循环
<!DOCTYPE html>
<html>
<head>
<title>Disney Favorites</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<style>
.center {
display: block;
margin-left: auto;
margin-right: auto;
width: 50%;
}
.centre {
text-align: center;
}
</style>
</head>
<body>
<h1 style= "font-size: 25px" class="text-center">Click on your favorite animated Disney canon movie</h1>
<section>
{% for image in imagelist %}
<div class="centre">
<button type="submit">
<img class="center" src="{{ url_for('static', filename='images/' + image) }}">
</img>
<p>{{image}}</p>
</button>
</div>
{% endfor %}
</section>
你必须使用过滤器:
<p>{{image|replace(".jpg", "")}}</p>
这是一个懒惰的问题。字符串是一种基本数据类型,通过字符串切片 (
filename[:4]
) 删除固定数量的字符,而filename.remove_suffix(".jpg")
等字符串方法通常是初学者教程的一部分,或者至少通过查看文档很容易发现。