模板变量
模板变量的作用是计算并输出,变量名必须由字母、数字、下划线(不能以下划线开头)和点组成。
语法如下:
1 | {{ 模板变量名 }} |
当模版引擎遇到点如book.title
,会按照下列顺序解析:
字典
book['title']
先属性后方法,将
book
当作对象,查找属性 title,如果没有再查找方法 title()如果是格式为
book.0
则解析为列表book[0]
如果变量不存在则插入空字符串’’。
在模板中调用方法时不能传递参数。
for
循环
1 | {% for item in 列表 %} |
if
判断
1 | {% if ... %} |
运算符
比较运算符:
1 | == |
比较运算符两边必须有空格
布尔运算符:
1 | and |
运算符左右两侧不能紧挨变量或常量,必须有空格。
过滤器
格式:模板变量|过滤器:参数
1 | {{ date|date:'Y年-m月-d日' }} {# 日期格式 #} |
自定义过滤器:
- 在你的应用下面新建 python package(python 包),名称为:
templatetags
- 新建
filters.py
文件,名称随意 - 在
filters.py
内导入类from django.template import Library
- 创建
register = Library()
类的对象 - 自定义过滤器函数需在函数上方使用
@register.filter
装饰函数 - 定义好过滤器后,在模板文件中引入自定义过滤器
{% load filters %}
1 | # 自定义过滤器 |
1 | <html> |
自定义过滤器参数,最少一个,最多两个
注释
单行注释语法如下:
1 | {#...#} |
注释可以包含任何模版代码,有效的或者无效的都可以。
1 | {# { % if foo % }bar{ % else % } #} |
多行注释使用 comment 标签,语法如下:
1 | {%comment%} |
模板标签
1 | {% autoescape off %} {# 关闭模板字符串转义 #} |
模板继承
典型应用:网站的头部、尾部信息。
父模板:
标签 block:用于在父模板中预留区域,留给子模板填充差异性的内容,名字不能相同。 为了更好的可读性,建议给 endblock 标签写上名字,这个名字与对应的 block 名字相同。父模板中也可以使用上下文中传递过来的数据。
1 | {% block 名称 %} |
子模板:
标签 extends:继承,写在子模板文件的第一行。
子模版不用填充父模版中的所有预留区域,如果子模版没有填充,则使用父模版定义的默认值。
1 | {% extends "父模板路径" %} |