我不明白 Jinja2 模板扩展有什么问题

I can't understand what's my problem with Jinja2 template extension

我已经为 运行 编写了一些 HTML 和 Flask 代码,但它不适用于模板。它需要显示宇航员的采访结果。这些信息在可变数据中给出,它是带键的字典,指的是宇航员的名字、姓氏、性别和教育。

我的文件结构:文件“finder.py”和目录“templates”有两个模板——“auto_answer.html”和“base.html”。

finder.py:

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


@app.route("/")
def main():
    return "nothing"


@app.route("/answer")
@app.route("/auto_answer")
def answer():
    data = {
        "title": "Анкета",
        "surname": "Anchikov",
        "name": "Timothy",
        "education": "среднее",
        "profession": "экзобиолог",
        "sex": "male",
        "motivation": "Хочу стать одним из первых колонизаторов Марса!",
        "ready": True
    }
    return render_template(["base.html", "auto_answer.html"], title=data["title"], data=data)


if __name__ == "__main__":
    app.run(port=8080, host="127.0.0.1")

base.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{{ title }}</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css"
          rel="stylesheet"
          integrity="sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl"
          crossorigin="anonymous">
    <style>
        h3 {
            margin-left: 60px;
            margin-top: 20px;
        }
        ul {
            margin-left: 90px;
        }
        ol {
            margin-left: 90px;
        }
    </style>
</head>
<body>
    <h1>Миссия Колонизация Марса</h1>
    <h4>И на Марсе будут яблони цвести!</h4>
    <div id="main-block">
        {% block content %}{% endblock %}
    </div>
</body>
</html>

auto_answer.html:

{% extends 'base.html' %}

{% block content %}
    <p>Фамилия: {{data["surname"]}}</p>
    <p>Имя: {{data["name"]}}</p>
    <p>Образование: {{data["education"]}}</p>
    <p>Профессия: {{data["profession"]}}</p>
    <p>Пол: {{data["sex"]}}</p>
    <p>Мотивация: {{data["motivation"]}}</p>
    <p>Готовы остаться на Марсе? {{data["ready"]}}</p>
{% endblock %}

怎么了?

在您的 render_template() 中,您正在传递两个 HTML 页。

为了 auto_answer.html 加载其基本元素,它通过 {% extends 'base.html' %}(您已经拥有)来加载它,仅此而已。意思是,您不需要呈现两个 HTML 页面。

return render_template("auto_answer.html", title=data["title"], data=data)