gpt4 book ai didi

python - 扩展未出现在 Flask Python 中的基本模板

转载 作者:太空宇宙 更新时间:2023-11-04 11:14:06 24 4
gpt4 key购买 nike

我有一个包含页眉和页脚 block 的 base.html 页面。当我在我的 home.html 页面中使用 {% extends "base.html"%} 时,我从 base.html 页面中什么也得不到。

如果我使用 {% include "base.html"%},我在 home.html 页面中的所有内容都在底部,页眉和页脚在顶部。有谁知道我该如何解决这个问题?

我想要页眉 block 在顶部,home.html 的内容在中间,页脚 block 在主页底部呈现。如果有任何帮助,我将不胜感激。谢谢。

这是我的代码。 myapp.py

from flask import Flask, render_template, url_for
app = Flask(__name__)

@app.route("/")
@app.route("/home")
def home():


return render_template("home.html", title="Home",
menu = menu)


@app.route("/base")
def base():

return render_template("base.html", title="Base")

if __name__ == "__main__":
app.run(debug=True)

base.html

<!DOCTYPE html>
<html>
<head>
<title>{{title}} - Restaurant</title>
</head>
<body>

{% block header %}

<ul>
<li><a href="{{url_for('home')}}">Home</a></li>

</ul>

{% endblock header %}



{% block footer %}

<h1>This is a footer</h1>

{% endblock footer %}

</body>

home.html

{% extends "base.html" %}
{% block header %}

<h1>Home Page</h1>

{% endblock header %}



{% block footer %}

<h1>New stuff in home page</h1>

{% endblock footer %}

最佳答案

在子模板中定义一个 block 会自动完全覆盖父模板中的版本。如果您还想输出父版本,则需要调用 super() - 参见 the Jinja2 docs .

所以你的 home.html 应该是:

{% extends "base.html" %}
{% block header %}
{{ super() }}
<h1>Home Page</h1>
{% endblock header %}


{% block footer %}
{{ super() }}
<h1>New stuff in home page</h1>
{% endblock footer %}

关于python - 扩展未出现在 Flask Python 中的基本模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57437338/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com