Flask模板继承功能失效,多番排查后仍未解决,求故障原因
Flask模板继承失效问题排查
问题描述
正在学习Flask的模板继承功能,但该功能无法正常生效。已尝试调整文件位置、修改文件名、更改代码内容,问题依旧,但Flask其他功能均可正常运行。两个HTML文件均存放于template文件夹中。
相关代码
Deneme.py
from flask import Flask, render_template, redirect, url_for app = Flask(__name__) @app.route("/") def home(): return render_template("go.html") if __name__ == "__main__": app.run(debug=True)
go.html(基模板)
<!DOCTYPE html> <html lang="en"> <head> <title>Template Inheritance</title> </head> <body> <h1> This heading is common in all webpages </h1> {% block content %} {% endblock %} </body> </html>
side.html(子模板)
{% extends "go.html" %} {% block content %} <h1>Welcome to Home</h1> {% endblock %}
故障原因
你当前的路由直接渲染的是基模板go.html,而Flask模板继承的逻辑是需要渲染子模板side.html——由子模板主动继承基模板的结构,再将自身内容填充到基模板的对应区块中。直接访问基模板只会显示其默认内容,不会触发子模板的继承逻辑,所以看起来继承功能未生效。
解决方法
修改Deneme.py中的路由函数,将render_template的参数改为子模板文件名:
@app.route("/") def home(): return render_template("side.html")
访问根路径时,Flask会渲染子模板side.html,它会自动继承go.html的结构,并将自身content区块的内容填充到基模板对应位置,模板继承功能即可正常生效。
内容的提问来源于stack exchange,提问作者carnoteng
相关产品推荐
相关产品推荐

