在前面的页面中,我们创建了两个模板,一个用于列出所有成员,另一个用于有关成员的详细信息。
这些模板具有一组对于两个模板都相同的 HTML 代码。
Django 提供了一种制作 "parent template" 的方法,您可以将其包含在所有页面中以执行所有页面中相同的操作。
首先创建一个名为的模板master.html
,包含所有必需的 HTML 元素:
my_tennis_club/members/templates/master.html
:
<!DOCTYPE html>
<html>
<head>
<title>{% block title %}{% endblock %}</title>
</head>
<body>
{% block content %}
{% endblock %}
</body>
</html>
您是否看到 Django 块标签内<title>
元素,以及<body>
元素?
它们是占位符,告诉 Django 用其他来源的内容替换此块。
现在两个模板(all_members.html
和details.html
)可以用这个master.html
模板。
这是通过将主模板包含在{% extends %}
标签,并插入title
块和一个content
堵塞:
my_tennis_club/members/templates/all_members.html
:
{% extends "master.html" %}
{% block title %}
My Tennis Club - List of all members
{% endblock %}
{% block content %}
<h1>Members</h1>
<ul>
{% for x in mymembers %}
<li><a href="details/{{ x.id }}">{{ x.firstname }} {{ x.lastname }}</a></li>
{% endfor %}
</ul>
{% endblock %}
运行示例 »
my_tennis_club/members/templates/details.html
:
{% extends "master.html" %}
{% block title %}
Details about {{ mymember.firstname }} {{ mymember.lastname }}
{% endblock %}
{% block content %}
<h1>{{ mymember.firstname }} {{ mymember.lastname }}</h1>
<p>Phone {{ mymember.phone }}</p>
<p>Member since: {{ mymember.joined_date }}</p>
<p>Back to <a href="/members">Members</a></p>
{% endblock %}
运行示例 »
如果您在自己的计算机上执行了所有步骤,则可以在自己的浏览器中看到结果:127.0.0.1:8000/members/
。
如果服务器关闭,您必须使用以下命令重新启动它runserver
命令:
py manage.py runserver
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!