extends和block的简单例子和解释
<!-- main.html -->
<head>
<title>{{ page_title }}</title>
</head>
<body>
<div id="container">
<header>
{% block header %}<h1>Burt's Books</h1>{% end %}
</header>
</div>
</body>
<!-- index.html -->
{% extends "main.html" %}
{% block header %}
<h1>{{ header_text }}</h1>
{% end %}
# main.py
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.render(
"index.html",
page_title="Burt's Books | Home",
header_text="Welcome to Burt's Books!",
)
访问localhost:8000/,显示的是哪个页面?
以main.html为基础、填入了index.html中block定义的内容。因为index.html extends了main.html。
main.html中的{{ page_title }}值来自哪里?
MainHandler中self.render的入参。
main.html中的以下内容会显示为什么?
{% block header %}<h1>Burt's Books</h1>{% end %}
显示为“Welcome to Burt’s Books!”
首先它被index.html中的{% block header %} {% end %}覆盖,其次{{ header_text }}为入参的值。