Django框架(23.Django中的模板的標籤、變量、過濾器和註釋)

模板

作爲Web框架,Django提供了模板,用於編寫html代碼,還可以嵌入模板代碼更快更方便的完成頁面開發,再通過在視圖中渲染模板,將生成最終的html字符串返回給客戶端瀏覽器。模版致力於表達外觀,而不是程序邏輯。模板的設計實現了業務邏輯view與顯示內容template的分離,一個視圖可以使用任意一個模板,一個模板可以供多個視圖使用。

模板包含兩部分:

  • 靜態部分,包含html、css、js。
  • 動態部分,就是模板語言。

Django模板語言,簡寫DTL,定義在django.template包中。

配置模板文件夾

創建項目後,在"項目名稱/settings.py"文件中定義了關於模板的配置。

DIRS定義一個目錄列表,模板引擎按列表順序搜索這些目錄以查找模板文件,通常是在項目的根目錄下創建templates目錄。

Django處理模板分爲兩個階段:

  • 1.加載:根據給定的路徑找到模板文件,編譯後放在內存中。
  • 2.渲染:使用上下文數據對模板插值並返回生成的字符串。

爲了減少開發人員重複編寫加載、渲染的代碼,Django提供了簡寫函數render,用於調用模板。

 模板語言

模板語言包括4種類型,分別是:

  • 變量
  • 標籤
  • 過濾器
  • 註釋

 

模板變量

模板變量的作用是計算並輸出,變量名必須由字母、數字、下劃線(不能以下劃線開頭)和點組成。

語法如下:

{{變量}}

例如,當 book爲後端傳過來的值時 , 模版引擎遇到  點   如book.title,會按照下列順序解析:

  • 1.字典book['title']
  • 2.先屬性後方法,將book當作對象查找屬性title,如果沒有再查找方法title()
  • 3.如果是格式爲book.0  則解析爲  列表book[0]

    如果變量不存在則插入空字符串''。

在模板中調用方法時不能傳遞參數

 模板標籤

語法如下:

{%代碼段%}

for標籤語法如下:

{%for item in 列表%}
循環邏輯
{{forloop.counter}}表示當前是第幾次循環,從1開始
{%empty%}
列表爲空或不存在時執行此邏輯
{%endfor%}

if標籤語法如下:

{%if ...%}
邏輯1
{%elif ...%}
邏輯2
{%else%}
邏輯3
{%endif%}

比較運算符如下:

注意:運算符左右兩側不能緊挨變量或常量,必須有空格。

==
!=
<
>
<=
>=

布爾運算符如下:

and
or
not

點擊查看了解更多標籤https://docs.djangoproject.com/zh-hans/2.1/ref/templates/builtins/

 模板過濾器

語法如下:

  • 使用管道符號 |  來應用過濾器,用於進行計算、轉換操作,可以使用在變量、標籤中。
  • 如果過濾器需要參數,則使用冒號  :  傳遞參數。
變量|過濾器:參數

長度length,返回字符串包含字符的個數,或列表、元組、字典的元素個數。

data|length 

默認值default,如果變量不存在時則返回默認值。

data|default:'默認值'

日期date,用於對日期類型的值進行字符串格式化,常用的格式化字符如下:

  • Y表示年,格式爲4位,y表示兩位的年。
  • m表示月,格式爲01,02,12等。
  • d表示日, 格式爲01,02等。
  • j表示日,格式爲1,2等。
  • H表示時,24進制,h表示12進制的時。
  • i表示分,爲0-59。
  • s表示秒,爲0-59。
value|date:"Y年m月j日  H時i分s秒"

點擊查看了解更多標籤https://docs.djangoproject.com/zh-hans/2.1/ref/templates/builtins/

 模板註釋

在模板中使用如下模板註釋,這段代碼不會被編譯,不會輸出到客戶端;html註釋只能註釋html內容,不能註釋模板語言。

1)單行註釋語法如下:

{#...#}

註釋可以包含任何模版代碼,有效的或者無效的都可以。

{# { % if foo % }bar{ % else % } #}

2)多行註釋使用comment標籤,語法如下:

{%comment%}
...
{%endcomment%}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章