语法
变量
变量被 {{ 和 }} 包围
My first name is {{ first_name }}. My last name is {{ last_name }}.
模板系统统一使用点符号来访问变量的属性,例如属性查找和列表索引
对于{{ question.question_text }}
1)Django 尝试对 question 对象使用字典查找(也就是使用 obj.get(str) 操作)
2)如果失败了就尝试属性查找(也就是 obj.str 操作)
3)如果这一操作也失败的话,将会尝试列表查找(也就是 obj[int] 操作)。
{{ my_dict.key }}
{{ my_object.attribute }}
{{ my_list.0 }}
标签
标签被 {% 和 %} 包围
{% csrf_token %}
标签可以接受参数
{% cycle 'odd' 'even' %}
一些标签需要开始和结束标签:
所有内置标签
https://docs.djangoproject.com/zh-hans/3.2/ref/templates/builtins/
过滤器
过滤器转换变量和标签参数的值。
如下所示,使用title过滤器后,会将question变量值的每个单词首字母大写
{{ question | title }}
addslashes过滤器可以在所有的引号前面增加反斜杠
{{ value|addslashes }}
给定默认值
{{ value|default_if_none:"nothing" }}
所有内置过滤器
https://docs.djangoproject.com/zh-hans/3.2/ref/templates/builtins/#built-in-filter-reference
组件
https://docs.djangoproject.com/zh-hans/3.2/topics/templates/#components
模板引擎
https://docs.djangoproject.com/zh-hans/3.2/topics/templates/#support-for-template-engines
内置两种模板引擎
django.template.backends.django.DjangoTemplates
django.template.backends.jinja2.Jinja2