日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

html语言可以写模版继承吗,Django框架(十一):模板介绍、模板语言、模板继承、HTML转义...

發布時間:2023/12/4 HTML 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 html语言可以写模版继承吗,Django框架(十一):模板介绍、模板语言、模板继承、HTML转义... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 模板介紹

1.1 模板的功能

產生html,控制頁面上展示的內容。模板文件不僅僅是一個html文件。

模板文件包含兩部分內容:

靜態內容:css、js、html。

動態內容:用于動態去產生一些頁面內容。通過模板語言來產生。

1.2 模板文件的使用

通常是在視圖函數中使用模板產生html內容返回給客戶端。

加載模板文件loader.get_template,獲取模板文件的內容,產生一個模板對象。

定義模板上下文RequeseContext,給模板文件傳遞數據。

模板渲染產生html頁面內容render,用傳遞的數據替換相應的變量,產生一個替換后的標準的html內容。

1.3 模板文件加載順序

首先去配置的模板目錄下面去找模板文件。

去INSTALLED_APPS下面的每個應用的templates去找模板文件,前提是應用中必須有templates文件夾。

2. 模板語言

2.1 變量

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

語法如下:

{{變量}}

當模版引擎遇到點如book.title,會按照下列順序解析:

1.字典book['title']

2.先屬性后方法,將book當作對象,查找屬性title,如果沒有再查找方法title()

3.如果是格式為book.0則解析為列表book[0]

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

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

例如:

{{book.btitile}}

首先把book當成一個字典,把btitle當成鍵名,進行取值book['btitle']。

把book當成一個對象,把btitle當成屬性,進行取值book.btitle。

把book當成一個對象,把btitle當成對象的方法,進行取值book.btitle。

例如:

{{book.0}}

首先把book當成一個字典,把0當成鍵名,進行取值book[0]。

把book當成一個列表,把0當成下標,進行取值book[0]。

如果解析失敗,則產出內容時用空字符串填充模板變量。

使用模板變量時,前面的困難是一個字典,可能是一個對象,還可能是一個列表。

2.2 標簽

語法如下:

{%代碼段%}

for標簽語法如下:

{%for item in 列表%}

循環邏輯

{{forloop.counter}}表示當前是第幾次循環,從1開始

{%empty%}

列表為空或不存在時執行此邏輯

{%endfor%}

if標簽語法如下:

{%if ...%}

邏輯1

{%elif ...%}

邏輯2

{%else%}

邏輯3

{%endif%}

比較運算符如下:

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

==

!=

<

>

<=

>=

布爾運算符如下:

and

or

not

2.3 過濾器

語法如下:

使用管道符號|來應用過濾器,用于進行計算、轉換操作,可以使用在變量、標簽中。

如果過濾器需要參數,則使用冒號:傳遞參數。

變量|過濾器:參數

長度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秒"

2.4 注釋

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

單行注釋語法如下:

{#...#}

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

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

多行注釋使用comment標簽,語法如下:

{%comment%}

...

{%endcomment%}

3. 模板繼承

模板繼承和類的繼承含義是一樣的,主要是為了提高代碼重用,減輕開發人員的工作量。

典型應用:網站的頭部、尾部信息。

3.1 父模板

如果發現在多個模板中某些內容相同,那就應該把這段內容定義到父模板中。

標簽block:用于在父模板中預留區域,留給子模板填充差異性的內容,名字不能相同。 為了更好的可讀性,建議給endblock標簽寫上名字,這個名字與對應的block名字相同。父模板中也可以使用上下文中傳遞過來的數據。

{%block 名稱%}

預留區域,可以編寫默認內容,也可以沒有默認內容

{%endblock 名稱%}

3.2 子模板

標簽extends:繼承,寫在子模板文件的第一行。

{% extends "父模板路徑"%}

子模版不用填充父模版中的所有預留區域,如果子模版沒有填充,則使用父模版定義的默認值。

填充父模板中指定名稱的預留區域。

{%block 名稱%}

實際填充內容

{{block.super}}用于獲取父模板中block的內容

{%endblock 名稱%}

4. HTML轉義

模板對所有傳遞的文字進行輸出時,合并以下字符自動轉義。

小于號< 轉換為 <

大于號> 轉換為 >

單引號' 轉換為 '

雙引號" 轉換為 "

與符號& 轉換為 &

過濾器escape可以實現對變量的html轉義,默認模板就會轉義,一般省略。

{{t1|escape}}

過濾器safe:局部轉義,告訴模板這個變量是安全的,可以解釋執行。

{{data|safe}}

標簽autoescape:設置一段代碼都局部轉義,接受on,off參數。

{%autoescape off%}

...

{%endautoescape%}

模板硬編碼中的字符串默認不會經過轉義,如果需要轉義,那需要手動進行轉義。

總結

以上是生活随笔為你收集整理的html语言可以写模版继承吗,Django框架(十一):模板介绍、模板语言、模板继承、HTML转义...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。