Python Flask调用render_template渲染页面仅显示背景无内容如何排查
Flask模板渲染异常问题排查结果
共存在3处核心问题,对应修复方案如下:
问题1:路由配置不匹配+视图参数缺失
- 当前代码中仅定义了
/和/home/两个路由,无/index路由,访问localhost:5000/index无法匹配到对应视图 home视图函数定义了形参name,但路由规则中没有配置对应的参数占位,也没有设置默认值,直接访问会抛出参数缺失错误
修复代码(Test.py):
from flask import Flask from flask import render_template app = Flask(__name__) # 新增/index路由,同时给name参数设置默认值 @app.route("/") @app.route("/home/") @app.route("/index/") def home(name=None): return render_template("home.html", name=name if name else "首页") if __name__ == "__main__": app.run(debug=True)
问题2:Jinja2块名称不匹配
- 父模板
base.html中定义的可替换块名为content - 子模板
home.html中错误写为block body,名称对不上导致子模板内容无法渲染到父模板中
修复代码(home.html):
{% extends 'base.html' %} <!-- 把块名从body改成和父模板一致的content --> {% block content %} <h1>{{ name }}</h1> {% endblock %}
验证步骤
- 重启Flask服务
- 访问
http://localhost:5000/index即可正常显示页面内容
内容的提问来源于stack exchange,提问作者Ansar Al
相关产品推荐
相关产品推荐

