子模板不是渲染

时间:2015-01-09 18:43:40

标签: python flask jinja2

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

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>

1 个答案:

答案 0 :(得分:3)

您需要呈现child.html,而不是layout.html。孩子将扩展布局,但是你编写它的方式,只会呈现布局。

return render_template('child.html')