Flask中如何将图片名作为字符串传入HTML时移除最后4个字符
解决方法
方法一:后端处理(推荐)
在app.py的select函数中提前处理文件名,剥离后缀后传递给模板,这样模板可以直接使用处理好的名称:
修改后的select函数代码:
@app.route('/select.html') def select(): image_dir = os.path.join(app.static_folder, "images") imagelist = [] for filename in os.listdir(image_dir): # 用os.path.splitext剥离文件后缀,返回(名称, 后缀)元组 name_without_ext = os.path.splitext(filename)[0] imagelist.append( (filename, name_without_ext) ) return render_template("select.html", imagelist=imagelist)
对应修改模板中的循环逻辑,分别使用原文件名(生成图片路径)和处理后的名称(显示用):
{% for image, image_name in imagelist %} <div class="centre"> <button type="submit"> <img class="center" src="{{ url_for('static', filename='images/' + image) }}"> </img> <p>{{ image_name }}</p> </button> </div> {% endfor %}
方法二:前端模板直接处理
如果不想改动后端代码,可直接在Jinja2模板中用字符串处理逻辑去掉后缀:
将模板里的<p>{{image}}</p>替换为:
<p>{{ image.split('.')[0] }}</p>
这种方式更通用,能兼容.png等其他后缀的图片;如果确定只有.jpg后缀,也可以用替换写法:
<p>{{ image.replace('.jpg', '') }}</p>
内容的提问来源于stack exchange,提问作者JoseGonzales
相关产品推荐
相关产品推荐

