子模板未呈现

Child template isn't rendering

我有一个布局模板和一个子模板。但是,显示了子模板中的 none 额外信息。为什么没有使用子模板中的信息?

FlaskTest.py

from flask import Flask, render_template

app = Flask(__name__)


@app.route('/')
def hello_world():
    return render_template('layout.html')


if __name__ == '__main__':
    app.run()

layout.html

<!doctype html>
<html>
  <head>
    {% block head %}
    <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
    <title>{% block title %}{% endblock %} - My Webpage</title>
    {% endblock %}
  </head>
  <body>
    <div id="content">{% block content %}{% endblock %}</div>
    <div id="footer">
      {% block footer %}
      &copy; Copyright 2010 by <a href="http://domain.invalid/">you</a>.
      {% endblock %}
    </div>
  </body>
</html>

child.html

{% extends 'layout.html' %}
{% block title %}Index{% endblock %}

{% block head %}
    {{ super() }}
    <style type="text/css">
        .important {
            color: #336699;
        }
    </style>
{% endblock %}

{% block content %}
    <h1>Index</h1>
    <p class="important">
        Welcome on my awesome homepage.
{% endblock %}

http://localhost:5000/ 我得到:

<!doctype html>
<html>
  <head>

    <link rel="stylesheet" href="/static/style.css">
    <title> - My Webpage</title>

  </head>
  <body>
    <div id="content"></div>
    <div id="footer">

      &copy; Copyright 2010 by <a href="http://domain.invalid/">you</a>.

    </div>
  </body>
</html>

您需要渲染 child.html,而不是 layout.html。 Child 将 扩展 布局,但按照您编写的方式,只会呈现布局。

return render_template('child.html')