## 模板變數 - 普通變數 {{ name }} - 對象變數(使用點號訪問對象屬性和方法,方法不加括弧) {{ person.name }} ## 常用模板標簽 # if標簽,支持and,or,not和嵌套,不支持括弧 {% if %}{% endif %} {% if %}{% elif %} ...
## 模板變數
- 普通變數
{{ name }}
- 對象變數(使用點號訪問對象屬性和方法,方法不加括弧)
{{ person.name }}
## 常用模板標簽
# if標簽,支持and,or,not和嵌套,不支持括弧
{% if %}{% endif %}
{% if %}{% elif %}...{% else %}{% endif %}
# for標簽,用法與Python中基本相同
{% for item in items %}{% endfor %}
{% for item in items reversed %}{% endfor %} # 反向迭代
{% for k, v in data.items %}{% endfor %}
{% for item in items %} #相當於:if items:
語句一 for item in items:
{% empty %} 語句一
語句二 else:
{% endfor %} 語句二
- 在for標簽中自帶forloop對象
- forloop.counter 從1開始計數
{% for item in items %}
{{ forloop.counter }}: {{ item }}
- forloop.counter0 從0開始計數
- forloop.revcounter 逆向計數,最後一個數是1
- forloop.revcounter0 逆向計數,最後一個數是0
- forloop.first 布爾值,第一次迴圈時為True
- forloop.last 布爾值,最後一次迴圈時為True
- forloop.parentloop 引用父級迴圈的forloop對象
# 相等判斷(x, y可以是變數,字元串,整數,小數,變數不需要加{{}},字元串可以是單/雙引號引起的硬編碼,但列表、字典、布爾值不能硬編碼,可以使用標簽變數賦值,並且同樣支持{% else %}標簽)
{% ifequal x y %}{% endifequal %}
{% ifnotequal x y %}{% endifnotequal %}
# 註釋
{# 單行註釋 #}
{% comment %}
多行註釋
{% endcomment %}
## 過濾器(Python中關於字元串方法基本適用)
{{ name|lower }} 全小寫
{{ name|upper }} 全大寫
{{ name|title }} 首字母大寫
{{ users_list|first }} 第一個元素
{{ users_list|last }} 最後一個元素
{{ sentence|truncatewords:"5" }} 字元串截斷,以空格區分(所以中文無效),取前五個單詞,多餘的詞用...省略,數字必須放在雙引號內
{{ sentence|slice:"4" }} 字元串切分,可以用於中文,多餘的詞沒有任何標識
{{ sentence|addslashes}} 在反斜線,單引號,雙引號前面加一個斜線,可用於轉義字元串
{{ birthday|data:"F j, y" }} 格式化date或datatime對象,雙引號內也可以是 DATE_FORMAT、DATETIME_FORMAT、SHORT_DATE_FORMAT 或 SHORT_DATE-TIME_FORMAT
{{ word:length }} 返回長度
## 模板引用,引用其他模板的全部內容
{% include url %} # url可以是雙引號字元串硬編碼,也可以是變數
## 模板繼承
- 父模板使用block標簽表示可以被子模板修改的塊
{% block block_name %}{% endblock %}
- 子模板在文件第一行使用extends標簽繼承父模板,並同樣使用block標簽修改父模板中的同名塊
{% extends url %} # url可以是雙引號字元串硬編碼,也可以是變數
{% block block_name %} 新的內容 {% endblock %}
- 繼承樹中的任何模板都能訪問上下文中的每一個模板變數
## 使用模板
1 from django.shortcuts import render 2 3 4 def home(request): 5 return render(request, "index.html", {"name": "Stanley", "age":"22"}) 6 # 第一個參數必須是request,第二個參數是模板路徑,第三個參數是模板變數