1. 程式人生 > >django的模板語言 Django Template Language 模板語言

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 %}
    • 作用:用於跨站請求偽造保護
  • 註釋

    • 語法:{# 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

三、參考連結

        好文要頂 關注我 收藏該文 裙下的小香蕉
關注 - 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 %}
    • 作用:用於跨站請求偽造保護
  • 註釋

    • 語法:{# 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

三、參考連結