标签
标签允许您执行以下操作:if 条件、for 循环、模板继承等。
if 标签
就像在 Python 中一样,您可以在模板中使用 if、else 和 elif -
<html>
<body>
Hello World!!!<p>Today is {{today}}</p>
We are
{% if today.day == 1 %}
the first day of month.
{% elif today.day == 30 %}
the last day of month.
{% else %}
I don't know.
{%endif%}
</body>
</html>
在这个新模板中,根据一天中的日期,模板会呈现一定的值。
for 标签
就像'if'一样,我们有'for'标签,它的工作方式与Python中的完全一样。让我们更改我们的 hello 视图以将列表传输到我们的模板 -
def hello(request):
today = datetime.datetime.now().date()
daysOfWeek = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
return render(request, "hello.html", {"today" : today, "days_of_week" : daysOfWeek})
使用 {{ for }} 显示该列表的模板 -
<html>
<body>
Hello World!!!<p>Today is {{today}}</p>
We are
{% if today.day == 1 %}
the first day of month.
{% elif today.day == 30 %}
the last day of month.
{% else %}
I don't know.
{%endif%}
<p>
{% for day in days_of_week %}
{{day}}
</p>
{% endfor %}
</body>
</html>
我们应该得到类似的东西 -
Hello World!!!
Today is Sept. 11, 2015
We are I don't know.
Mon
Tue
Wed
Thu
Fri
Sat
Sun
阻止和扩展标签
没有模板继承,模板系统就不可能完整。这意味着当您设计模板时,您应该有一个带有孔的主模板,子模板将根据他自己的需要填充,就像一个页面可能需要一个特殊的 css 用于选定的选项卡。
让我们将 hello.html 模板更改为从 main_template.html 继承。
main_template.html
<html>
<head>
<title>
{% block title %}Page Title{% endblock %}
</title>
</head>
<body>
{% block content %}
Body content
{% endblock %}
</body>
</html>
hello.html
{% extends "main_template.html" %}
{% block title %}My Hello Page{% endblock %}
{% block content %}
Hello World!!!<p>Today is {{today}}</p>
We are
{% if today.day == 1 %}
the first day of month.
{% elif today.day == 30 %}
the last day of month.
{% else %}
I don't know.
{%endif%}
<p>
{% for day in days_of_week %}
{{day}}
</p>
{% endfor %}
{% endblock %}
在上面的示例中,在调用 /myapp/hello 时,我们仍然会得到与以前相同的结果,但现在我们依靠扩展和块来重构我们的代码 -
在 main_template.html 我们使用标签块定义块。标题块将包含页面标题,内容块将包含页面主要内容。在 home.html 中,我们使用 extends 从 main_template.html 继承,然后我们填充上面的块定义(内容和标题)。
注释标签
注释标签有助于将注释定义到模板中,而不是 HTML 注释,它们不会出现在 HTML 页面中。它可用于文档或仅注释一行代码。