You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask模板继承失效排查:配置路径与块标记后仍无法工作

Flask模板功能失效的问题原因及修复

问题1:模板继承的内容块位置错误

home.html中,歌曲循环代码写在了{% block content %}{% endblock %}外部,导致这部分代码不会被插入到base.html的content块中,同时还存在HTML标签不匹配的问题(<p>对应了</h1>)。

错误代码(/template/home.html):

{% extends 'base.html' %}
{% block content %}{% endblock content %}
    {% for song in song_list%}
    <div>
      <p>Music Name: {{song["song_name"]}}</h1>
      <p>user: {{song["user_name"]}}</p>
    </div>
    <br>
    {% endfor %}

修复后代码:

{% extends 'base.html' %}
{% block content %}
    {% for song in song_list%}
    <div>
      <p>Music Name: {{song["song_name"]}}</p>
      <p>user: {{song["user_name"]}}</p>
    </div>
    <br>
    {% endfor %}
{% endblock content %}

问题2:路由绑定错误,模板未接收数据

app.py中,/和/<user_name>路由绑定到了index()函数,但该函数仅返回模板,未传递song_list参数;而真正处理数据查询的display_songs()函数没有被任何路由绑定,导致模板中song_list为None,循环无法执行。

错误代码(app.py路由部分):

@app.route("/")
@app.route("/<user_name>")

def index():
    return render_template("home.html")

def display_songs(user_name=None):
    song_list = None
    if user_name:
        song_list = list(db.songs.find({"user_name": user_name}))
    else:
        song_list = list(db.songs.find({}))

    return render_template('home.html', song_list=song_list)

修复后代码:

@app.route("/")
@app.route("/<user_name>")
def display_songs(user_name=None):
    song_list = None
    if user_name:
        song_list = list(db.songs.find({"user_name": user_name}))
    else:
        song_list = list(db.songs.find({}))

    return render_template('home.html', song_list=song_list)

删除无用的index()函数,直接将路由绑定到处理数据的display_songs函数。

可选优化:静态文件路径规范

base.html中CSS使用相对路径../style.css,在Flask中推荐用url_for生成静态文件路径,确保路径始终正确(需将style.css放在项目根目录的static文件夹下):

<link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}" type="text/css" media="screen">

内容的提问来源于stack exchange,提问作者bloomsdayforever

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 18:47:13