django的模板語言 Django Template Language 模板語言
Django Template Language 模板語言
一、標籤 tags
1、普通變數
- 普通變數用
{{ }}
- 變數名由數字、字母、下劃線組成
- 點.在模板語言中用來獲取物件相應的屬性值
- 示例
{# 取variable中的第一個引數 #} {{ variable.0 }} {# 取字典dic中key的值 #} {{ dic.key }} {# 取obj_list物件列表中第一個物件的attr屬性值 #} {{ obj_list.0.attr }} {# 點操作只能呼叫不帶引數的方法 #} {{ obj_list.0.method }}
2、邏輯判斷
- 邏輯判斷用
{% %}
-
for
- 語法:
{% for item in item_list %}...{% empty %}...{% endfor %}
- 作用:迴圈item_list,如果item值為空或不存在,則會執行empty中的程式碼,切記要寫endfor結束迴圈
-
常用for迴圈引數:
Variable Description forloop.counter
當前迴圈的索引值(從1開始) forloop.counter0
當前迴圈的索引值(從0開始) forloop.revcounter
當前迴圈的倒序索引值(從1開始) forloop.revcounter0
當前迴圈的倒序索引值(從0開始) forloop.first
當前迴圈是不是第一次迴圈(布林值) forloop.last
當前迴圈是不是最後一次迴圈(布林值) forloop.parentloop
本層迴圈的外層迴圈
- 語法:
-
if
- 語法:
{% if some_condition %}...{% elif other_condition %}...{% endif %}
- 作用:條件判斷,切記要寫endif結束條件判斷
- 常用與if語句結合的判斷關鍵字
and 、or、==、>、<、!=、<=、>=、in、not in、is、is not
- 語法:
-
with
- 語法:
{% with new_variable = old_variable %}.....{% endwith %}
作用:定義中間變數,作用域只在with中
- 語法:
-
csrf_token
- 語法:在頁面的每個form表單中寫上
{% csrf_token %}
- 作用:用於跨站請求偽造保護
- 語法:在頁面的每個form表單中寫上
-
註釋
- 語法:
{# note #}
- 語法:
3、母版系統
-
繼承
- 語法:
{% extends 'base.html' %}
- 作用:在子頁面中在頁面最上方使用下面的語法來繼承母板
- 語法:
-
塊 block
- 語法:
{% block block_name %}...{% endblock %}
- 作用:在子頁面中通過定義母板中的block名來對應替換母板中相應的內容
- 語法:
-
元件
- 語法:
{% include 'subassembly.html' %}
- 作用:可以將常用的固定的HTML內容儲存在單獨的檔案中,在需要的地方用以上語法匯入使用
- 語法:
4、靜態檔案相關
-
引用靜態檔案目錄
- 語法:
{% load static %}
- 作用:通過模板語言引用靜態資料夾目錄名稱
- 示例:
{% load static %} <img src="{% static 'images/sample.jpg' %}"></img>
- 1
- 2
- 語法:
-
引用靜態檔案目錄
- 語法:{% get_static_prefix %}
- 作用:通過模板語言引用靜態資料夾目錄名稱
- 示例:
{% load static %} <img src="{% get_static_prefix %}images/sample.jpg"></img>
- 1
- 2
5、自定義simpletag
- 作用:可以自定義標籤,註冊後可使用
-
自定義simpletag的步驟(與自定義Filter類似,不過接收更靈活的引數)
- 在專案的app中建立名為templatetags的資料夾
- 在templatetags的資料夾中建立自定義的py檔案,例如:custom_simpletag.py
-
custom_simpletag.py中編寫自定義simpletag,例如:
from django import template register = template.Library() @register.simple_tag(name="my_simpletag") def add_simpletag(a,b,c): # 可接收多個引數 return "{} + {} + {}".format(a, b, c)
- 1
- 2
- 3
- 4
- 5
- 6
- 使用自定義simple_tag前,首先在HTML頁面中匯入py檔案
{% load custom_simpletag %} {% my_simpletag "1" "2" "3" %}
- 1
- 2
6、自定義inclusion_tag
- 作用:返回html程式碼片段
-
自定義inclusion_tag的步驟
- 在專案的app中建立名為templatetags的資料夾
- 在templatetags的資料夾中建立自定義的py檔案,例如:custom_inclusiontag.py
-
custom_inclusiontag.py中編寫自定義inclusiontag,例如:
from django import template register = template.Library() @register.inclusion_tag('inclusion_tag.html') def my_inclusiontag(n): n = 1 if n < 1 else int(n) data = ["第{}項".format(i) for i in range(1, n+1)] return {"data": data}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
-
在templates資料夾中建立剛才註冊的inclusion_tag.html檔案
<ul> {% for choice in data %} <li>{{ choice }}</li> {% endfor %} </ul>
- 1
- 2
- 3
- 4
- 5
-
使用自定義my_inclusiontag前,首先在HTML頁面中匯入py檔案
{% load custom_inclusiontag %} {% my_inclusiontag 10 %}
- 1
- 2
二、過濾器 Filter
1、內建過濾器
-
語法:
{{ value|filter_name:args }}
,注意:管道符前後沒有空格 -
default
- 語法:
{{ value: default: "自定義內容"}}
- 作用:如果value值沒傳的話就顯示自定義內容
- 語法:
-
length
- 語法:{{ value|length }}
- 作用:返回value的長度
-
filesizeformat
- 語法:
{{ value|filesizeformat }}
- 作用:將value格式化為一個 “人類可讀的” 檔案大小格式
- 語法:
-
slice
- 語法:
{{value|slice:"start:end"}}
- 作用:切片
- 語法:
-
date
- 語法:
{{ value|date:"Y-m-d H: i:s"}}
- 作用:將時間格式的value進行自定義格式化
- 語法:
-
safe
- 語法:
{{value|safe}}
- 作用:取消Django對HTML標籤和JS等語法標籤進行自動轉義,認為插入的HTML或JS是安全的不必轉義
- 語法:
-
truncatechars
- 語法:{{ value|truncatechars:num}}
- 作用:如果字串字元多於指定的字元數量,那麼會被截斷。截斷的字串將以可翻譯的省略號序列(“…”)結尾。num引數是指截斷的字元數
2、自定義過濾器 Filter
-
自定義過濾器的步驟
- 在專案的app中建立名為templatetags的資料夾
- 在templatetags的資料夾中建立自定義的py檔案,例如:custom_filter.py
-
在custom_filter.py中編寫自定義過濾器,例如:
from django import template register = template.Library() @register.filter(name="my_filter") def my_filter(value, arg): #最多接收兩個引數 return value.replace(arg, "")
- 1
- 2
- 3
- 4
- 5
- 6
- 使用自定義filter前,首先在HTML頁面中匯入py檔案
{% load custom_filter %} {{ variable|my_filter:"0" }}
- 1
- 2
三、參考連結
-
官方連結
https://docs.djangoproject.com/en/1.11/ref/templates/language/ -
官方連結-內建標籤
https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#built-in-tag-reference -
官方連結-內建過濾器
https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#built-in-filter-reference -
其他連結
http://baijiahao.baidu.com/s?id=1578789736945590676&wfr=spider&for=pc
https://code.ziqiangxuetang.com/django/django-template2.html
關注 - 8
粉絲 - 9 +加關注 0 0 « 上一篇: Django中使用locals()函式的技巧
» 下一篇: zip函式實際應用 posted @ 2018-04-23 16:43 裙下的小香蕉 閱讀( 206) 評論( 0) 編輯 收藏
一、標籤 tags
1、普通變數
- 普通變數用
{{ }}
- 變數名由數字、字母、下劃線組成
- 點.在模板語言中用來獲取物件相應的屬性值
- 示例
{# 取variable中的第一個引數 #}
{{ variable.0 }}
{# 取字典dic中key的值 #}
{{ dic.key }}
{# 取obj_list物件列表中第一個物件的attr屬性值 #}
{{ obj_list.0.attr }}
{# 點操作只能呼叫不帶引數的方法 #}
{{ obj_list.0.method }}
2、邏輯判斷
- 邏輯判斷用
{% %}
-
for
- 語法:
{% for item in item_list %}...{% empty %}...{% endfor %}
- 作用:迴圈item_list,如果item值為空或不存在,則會執行empty中的程式碼,切記要寫endfor結束迴圈
-
常用for迴圈引數:
Variable Description forloop.counter
當前迴圈的索引值(從1開始) forloop.counter0
當前迴圈的索引值(從0開始) forloop.revcounter
當前迴圈的倒序索引值(從1開始) forloop.revcounter0
當前迴圈的倒序索引值(從0開始) forloop.first
當前迴圈是不是第一次迴圈(布林值) forloop.last
當前迴圈是不是最後一次迴圈(布林值) forloop.parentloop
本層迴圈的外層迴圈
- 語法:
-
if
- 語法:
{% if some_condition %}...{% elif other_condition %}...{% endif %}
- 作用:條件判斷,切記要寫endif結束條件判斷
- 常用與if語句結合的判斷關鍵字
and 、or、==、>、<、!=、<=、>=、in、not in、is、is not
- 語法:
-
with
- 語法:
{% with new_variable = old_variable %}.....{% endwith %}
作用:定義中間變數,作用域只在with中
- 語法:
-
csrf_token
- 語法:在頁面的每個form表單中寫上
{% csrf_token %}
- 作用:用於跨站請求偽造保護
- 語法:在頁面的每個form表單中寫上
-
註釋
- 語法:
{# note #}
- 語法:
3、母版系統
-
繼承
- 語法:
{% extends 'base.html' %}
- 作用:在子頁面中在頁面最上方使用下面的語法來繼承母板
- 語法:
-
塊 block
- 語法:
{% block block_name %}...{% endblock %}
- 作用:在子頁面中通過定義母板中的block名來對應替換母板中相應的內容
- 語法:
-
元件
- 語法:
{% include 'subassembly.html' %}
- 作用:可以將常用的固定的HTML內容儲存在單獨的檔案中,在需要的地方用以上語法匯入使用
- 語法:
4、靜態檔案相關
-
引用靜態檔案目錄
- 語法:
{% load static %}
- 作用:通過模板語言引用靜態資料夾目錄名稱
- 示例:
{% load static %} <img src="{% static 'images/sample.jpg' %}"></img>
- 1
- 2
- 語法:
-
引用靜態檔案目錄
- 語法:{% get_static_prefix %}
- 作用:通過模板語言引用靜態資料夾目錄名稱
- 示例:
{% load static %} <img src="{% get_static_prefix %}images/sample.jpg"></img>
- 1
- 2
5、自定義simpletag
- 作用:可以自定義標籤,註冊後可使用
-
自定義simpletag的步驟(與自定義Filter類似,不過接收更靈活的引數)
- 在專案的app中建立名為templatetags的資料夾
- 在templatetags的資料夾中建立自定義的py檔案,例如:custom_simpletag.py
-
custom_simpletag.py中編寫自定義simpletag,例如:
from django import template register = template.Library() @register.simple_tag(name="my_simpletag") def add_simpletag(a,b,c): # 可接收多個引數 return "{} + {} + {}".format(a, b, c)
- 1
- 2
- 3
- 4
- 5
- 6
- 使用自定義simple_tag前,首先在HTML頁面中匯入py檔案
{% load custom_simpletag %} {% my_simpletag "1" "2" "3" %}
- 1
- 2
6、自定義inclusion_tag
- 作用:返回html程式碼片段
-
自定義inclusion_tag的步驟
- 在專案的app中建立名為templatetags的資料夾
- 在templatetags的資料夾中建立自定義的py檔案,例如:custom_inclusiontag.py
-
custom_inclusiontag.py中編寫自定義inclusiontag,例如:
from django import template register = template.Library() @register.inclusion_tag('inclusion_tag.html') def my_inclusiontag(n): n = 1 if n < 1 else int(n) data = ["第{}項".format(i) for i in range(1, n+1)] return {"data": data}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
-
在templates資料夾中建立剛才註冊的inclusion_tag.html檔案
<ul> {% for choice in data %} <li>{{ choice }}</li> {% endfor %} </ul>
- 1
- 2
- 3
- 4
- 5
-
使用自定義my_inclusiontag前,首先在HTML頁面中匯入py檔案
{% load custom_inclusiontag %} {% my_inclusiontag 10 %}
- 1
- 2
二、過濾器 Filter
1、內建過濾器
-
語法:
{{ value|filter_name:args }}
,注意:管道符前後沒有空格 -
default
- 語法:
{{ value: default: "自定義內容"}}
- 作用:如果value值沒傳的話就顯示自定義內容
- 語法:
-
length
- 語法:{{ value|length }}
- 作用:返回value的長度
-
filesizeformat
- 語法:
{{ value|filesizeformat }}
- 作用:將value格式化為一個 “人類可讀的” 檔案大小格式
- 語法:
-
slice
- 語法:
{{value|slice:"start:end"}}
- 作用:切片
- 語法:
-
date
- 語法:
{{ value|date:"Y-m-d H: i:s"}}
- 作用:將時間格式的value進行自定義格式化
- 語法:
-
safe
- 語法:
{{value|safe}}
- 作用:取消Django對HTML標籤和JS等語法標籤進行自動轉義,認為插入的HTML或JS是安全的不必轉義
- 語法:
-
truncatechars
- 語法:{{ value|truncatechars:num}}
- 作用:如果字串字元多於指定的字元數量,那麼會被截斷。截斷的字串將以可翻譯的省略號序列(“…”)結尾。num引數是指截斷的字元數
2、自定義過濾器 Filter
-
自定義過濾器的步驟
- 在專案的app中建立名為templatetags的資料夾
- 在templatetags的資料夾中建立自定義的py檔案,例如:custom_filter.py
-
在custom_filter.py中編寫自定義過濾器,例如:
from django import template register = template.Library() @register.filter(name="my_filter") def my_filter(value, arg): #最多接收兩個引數 return value.replace(arg, "")
- 1
- 2
- 3
- 4
- 5
- 6
- 使用自定義filter前,首先在HTML頁面中匯入py檔案
{% load custom_filter %} {{ variable|my_filter:"0" }}
- 1
- 2
三、參考連結
-
官方連結
https://docs.djangoproject.com/en/1.11/ref/templates/language/ -
官方連結-內建標籤
https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#built-in-tag-reference -
官方連結-內建過濾器
https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#built-in-filter-reference -
其他連結
http://baijiahao.baidu.com/s?id=1578789736945590676&wfr=spider&for=pc
https://code.ziqiangxuetang.com/django/django-template2.html