激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Django模塊學習之模塊語言詳解

Django模塊學習之模塊語言詳解

2022-02-26 00:18小鐳敲代碼 Python

模板語言渲染的整個過程其實就是將html轉換成函數,并為該函數提供全局變量,然后執行該函數,下面這篇文章主要給大家介紹了關于Django模塊學習之模塊語言的相關資料,需要的朋友可以參考下

前言

Django模塊引擎支持Django模塊語言(簡稱DTL)。DTL包含變量、注釋、過濾器、標簽、模塊繼承以及HTML轉義等語法。

本文介紹以下6個模塊語言

1、變量

2、注釋

3、過濾器

4、標簽:include

5、標簽:for

6、標簽:in

 

1、變量

DTL用{{變量名}}格式表示變量。變量名由字母、數字、下劃線組成,但不能以下劃線開頭。Django在渲染模板時,會遇到的變量替換為上下文中對應的變量值。如果變量是對象,可以使用點號(?)訪問其屬性或方法。

Django模塊學習之模塊語言詳解

 

2、注釋

DTL用{#...#}來表示注釋,注釋的內容不會出現在渲染結果里

Django模塊學習之模塊語言詳解

被{#...#}注釋的內容不能換行。要注釋多行內容,應使用comment標簽

<p>姓名:{{ name }}</p>
{%  comment "多行注釋" %}
<p>年齡:{{ age }}</p>
<p>日期:{{ now }}</p>
{% endcomment %}

模板中年齡和日期被包含在注釋中,在渲染時會被忽略。例如,在視圖中使用該模板的示例代碼

def testTemplate(request):
  time=datetime.today()
  c={'name':"小鐳",'age':999,'now':time}
  return render(request,'testtem.html',c)

瀏覽器顯示的渲染結果如圖:

Django模塊學習之模塊語言詳解

 

3、過濾器

過濾器用于改變變量的顯示結果。常用的過濾器有如下3個:

(1)default:設置變量為false或為空時顯示的替代值。基本格式為{{變量|default:替代值}}

(2)length:返回字符串或列表長度。基本格式為{{變量|length}}

(3)filesizeformat:將數值轉換為文件大小格式,如1.1KB。基本格式為{{變量|filesizeformat}}

Django模塊學習之模塊語言詳解

(Django提供了60多個內置模塊過濾器)

 

4、標簽:include

標簽用于完成一些更復雜的操作。如包含模塊,控制流程,創建輸出文本或實現模板繼承。

include標簽用于包含模塊,將其他模板代碼插入當前位置,并使用當前模板的上下文進行渲染。

include標簽的基本格式為:

{%include 模塊名稱%}

模塊名稱可以是字符串或者字符串變量。例如,模板文件testtemm.html代碼

模板A:{{data|default:'nothing'}}<br>

模板文件testtem1.html代碼

{%include 'testtemm.html'%}

模板B:當前日期:{%now "Y 年 m 月 d 日 H:i:s"%}

下面的試圖使用模板testtem.html

def testTemplate1(request):
  return render(request,'testtem1.html',{'data':123})

模塊testtem.html中使用了{%now%}標簽獲得指定格式的當前日期字符串。瀏覽器顯示渲染結果:

Django模塊學習之模塊語言詳解

可在包含模塊時指定參數,

{%include 'testtemm.html' with name='小鐳'%}

with之后連接的是參數,參數名與模板中的變量名一致。在傳遞多個參數時,使用空格作為分隔符

{%include 'testtemm.html' with data='abcd' data2=123%}

示例:

<!--chaper6\chaper6\templates\testtemm.html-->
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
模板A:{%include 'testtem.html' with name='小鐳'%}
</body>
</html>

Django模塊學習之模塊語言詳解

 

5、標簽:for

Django模塊學習之模塊語言詳解

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>test1</title>
</head>
<body>
<table>
  {% for r in data %}
    <tr>
      <td>第{{forloop.counter}}行:</td>
      {% for a in r %}
          <td>{{a}}</td>
      {% endfor %}
    </tr>
  {% endfor %}
</table>
</body>
</html>

下面的試圖使用該模板

def test1(request):
  data=[[1,2,3,4],[5,6,7,8],['a','b','c','d']]
  return render(request,'test1.html',{'data':data})

瀏覽器顯示的渲染結果如圖:

Django模塊學習之模塊語言詳解

可以使用reversed表示反向循環

{%for r in data reversed%}

將上面的模板文件 test1.html中的for標簽改為反向循環后,渲染結果(使用反向循環的渲染結果):

Django模塊學習之模塊語言詳解

對于包含子列表的列表變量,for標簽可將子列表映射到獨立變量,

<ul>
  {% for a,b,c,d in data %}
  <li>
      {{ a }},{{b}},{{ c }},{{ d }}
  </li>
  {% endfor %}
</ul>

Django模塊學習之模塊語言詳解

對于字典對象,for標簽可分別映射鍵和值。例如,字典對象{'name':“小鐳”,‘age':999}可用下面的模板:

<ul>
  {% for key,value in data.items %}
  <li>
      {{ key }}={{ value }}
  </li>
  {% endfor %}
</ul>

渲染結果如圖:

Django模塊學習之模塊語言詳解

可在for標簽塊的內部使用{% empty %}, 它表示當要遍歷的對象不存在或為空時輸出的內容。

示例:

<ul>
  {% for key,value in data1.items %}
  <li>
      {{ key }}={{ value }}
  </li>
  {% empty %}
     在上下文中沒找到字典對象,或者data為空
  {% endfor %}
</ul>

因為data1為空字典,所以使用{%empty%}

Django模塊學習之模塊語言詳解

 

6、標簽:if

if標簽用于構造條件分支,其基本結構如下

{% if var1 %}
..
{% elif var2 %}
..
{% else %}
..
{% endif %}

elif和else塊可以省略,elif塊可以有多個。Django按先后順序依次計算if和elif標簽的變量,如果變量為“真”(及變量存在,不為空、且不是False),則輸出相應的數據塊,且流程跳轉到endif標簽后。如果沒有變量為“真”,則輸出else數據塊(如果else數據塊存在的話)

例如,下面的模塊根據分數輸出等級:

分數:{{ data }},
{% if data >= 90 %}
  等級:A
{% elif data >= 80 %}
  等級:B
{% elif data >= 70 %}
  等級:C
{% elif data >= 60 %}
  等級:D
{% else %}
  等級:不合格
{% endif %}

下面的視圖使用該模塊:

def test2(request):
  data=int(request.GET['data'])
  return render(request,'test1.html',{'data':data})

本例從URL中獲得分數(格式為正式),request。GET['data']獲得的數據默認為字符串格式,所以需要將其轉換為整數。如果未做轉換,Django會將其作為字符串,模板將輸出else標簽部分的數據。

運在瀏覽器中訪問 “http://127.0.0.1:8000/test2?data=88”,輸出結果如圖所示

Django模塊學習之模塊語言詳解

Django模塊學習之模塊語言詳解

 

總結

到此這篇關于Django模塊學習之模塊語言的文章就介紹到這了,更多相關Django模塊語言內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_45890771/article/details/121159056

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品一区二区三区不卡 | a黄网站| 国产88久久久国产精品免费二区 | 日韩欧美综合在线 | 欧美一级片一区 | 请播放一级毛片 | 斗破苍穹在线免费 | www.guochan| 久久久综合久久久 | 久久久久久亚洲国产精品 | 成人永久免费视频 | 麻豆911| 色av成人天堂桃色av | 久久人人爽人人爽人人片av免费 | 免费国产成人高清在线看软件 | 国产免费一区二区三区视频 | 国产成人精品免费视频大全最热 | 免费淫视频| 国产精品久久77777 | 精品国产一区二区三区四区在线 | 久久久久亚洲美女啪啪 | 欧美成人免费小视频 | 午夜小电影 | 一区二区三级视频 | 色综合欧美 | 亚洲白嫩在线观看 | 欧美中文字幕在线视频 | 欧美成人免费电影 | 中文字幕精品在线播放 | 日韩一级视频 | 少妇一级淫片免费放4p | 日韩免费黄色 | 香蕉黄色网 | 欧美国产第一页 | 国产va在线观看免费 | 大片毛片| 国产精品免费久久久久久 | 亚洲国产精品久久久久久久久久久 | 久久久久成人精品免费播放 | 精品国产一区二区三区久久久 | 视频在线中文字幕 |