Django Template Language 模板語言

1、標籤 tags

一、普通變量

  • 普通變量用{{ }}
  • 變量名由數字、字母、下劃線組成
  • 點.在模板語言中用來獲取對象相應的屬性值
  • 示例
{# 取variable中的第一個參數 #}
{{ variable.0 }}
{# 取字典dic中key的值 #}
{{ dic.key }}
{# 取obj_list對象列表中第一個對象的attr屬性值 #}
{{ obj_list.0.attr }}
{# 點操做只能調用不帶參數的方法 #}
{{ obj_list.0.method }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

二、邏輯判斷

  • 邏輯判斷用{% %}
  • forhtml

    • 語法:{% for item in item_list %}...{% empty %}...{% endfor %}
    • 做用:循環item_list,若是item值爲空或不存在,則會執行empty中的代碼,切記要寫endfor結束循環
    • 經常使用for循環參數:python

      Variable Description
      forloop.counter 當前循環的索引值(從1開始)
      forloop.counter0 當前循環的索引值(從0開始)
      forloop.revcounter 當前循環的倒序索引值(從1開始)
      forloop.revcounter0 當前循環的倒序索引值(從0開始)
      forloop.first 當前循環是否是第一次循環(布爾值)
      forloop.last 當前循環是否是最後一次循環(布爾值)
      forloop.parentloop 本層循環的外層循環
  • ifdjango

    • 語法:{% if some_condition %}...{% elif other_condition %}...{% endif %}
    • 做用:條件判斷,切記要寫endif結束條件判斷
    • 經常使用與if語句結合的判斷關鍵字 
      and 、or、==、>、<、!=、<=、>=、in、not in、is、is not
  • with安全

    • 語法:{% with new_variable = old_variable %}.....{% endwith %}
    • 做用:定義中間變量
  • csrf_tokenapp

    • 語法:在頁面的每一個form表單中寫上{% csrf_token %}
    • 做用:用於跨站請求僞造保護
  • 註釋ide

    • 語法:{# note #}

三、母版系統

  • 繼承oop

    • 語法:{% extends 'base.html' %}
    • 做用:在子頁面中在頁面最上方使用下面的語法來繼承母板
  • 塊 blockui

    • 語法:{% block block_name %}...{% endblock %}
    • 做用:在子頁面中經過定義母板中的block名來對應替換母板中相應的內容
  • 組件spa

    • 語法:{% include 'subassembly.html' %}
    • 做用:能夠將經常使用的固定的HTML內容保存在單獨的文件中,在須要的地方用以上語法導入使用

四、靜態文件相關

  • 引用靜態文件目錄翻譯

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

五、自定義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

六、自定義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

2、過濾器 Filter

一、內置過濾器

  • 語法:{{ 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參數是指截斷的字符數

二、自定義過濾器 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

3、參考連接

相關文章
相關標籤/搜索