最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django模塊學(xué)習(xí)之模塊語言詳解

 更新時間:2021年11月09日 12:01:15   作者:小鐳敲代碼  
模板語言渲染的整個過程其實就是將html轉(zhuǎn)換成函數(shù),并為該函數(shù)提供全局變量,然后執(zhí)行該函數(shù),下面這篇文章主要給大家介紹了關(guān)于Django模塊學(xué)習(xí)之模塊語言的相關(guān)資料,需要的朋友可以參考下

前言

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

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

1、變量

2、注釋

3、過濾器

4、標(biāo)簽:include

5、標(biāo)簽:for

6、標(biāo)簽:in

1、變量

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

2、注釋

DTL用{#...#}來表示注釋,注釋的內(nèi)容不會出現(xiàn)在渲染結(jié)果里

 被{#...#}注釋的內(nèi)容不能換行。要注釋多行內(nèi)容,應(yīng)使用comment標(biāo)簽

<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)

瀏覽器顯示的渲染結(jié)果如圖: 

 

3、過濾器

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

(1)default:設(shè)置變量為false或為空時顯示的替代值?;靖袷綖閧{變量|default:替代值}}

(2)length:返回字符串或列表長度?;靖袷綖閧{變量|length}}

(3)filesizeformat:將數(shù)值轉(zhuǎn)換為文件大小格式,如1.1KB?;靖袷綖閧{變量|filesizeformat}}

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

4、標(biāo)簽:include

標(biāo)簽用于完成一些更復(fù)雜的操作。如包含模塊,控制流程,創(chuàng)建輸出文本或?qū)崿F(xiàn)模板繼承。

include標(biāo)簽用于包含模塊,將其他模板代碼插入當(dāng)前位置,并使用當(dāng)前模板的上下文進(jìn)行渲染。

include標(biāo)簽的基本格式為:

{%include 模塊名稱%}

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

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

模板文件testtem1.html代碼

{%include 'testtemm.html'%}

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

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

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

模塊testtem.html中使用了{(lán)%now%}標(biāo)簽獲得指定格式的當(dāng)前日期字符串。瀏覽器顯示渲染結(jié)果: 

 

可在包含模塊時指定參數(shù),

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

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

{%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>

5、標(biāo)簽:for

<!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})

 瀏覽器顯示的渲染結(jié)果如圖:

 

 可以使用reversed表示反向循環(huán)

{%for r in data reversed%}

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

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

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

 

對于字典對象,for標(biāo)簽可分別映射鍵和值。例如,字典對象{'name':“小鐳”,‘a(chǎn)ge':999}可用下面的模板:

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

 渲染結(jié)果如圖:

可在for標(biāo)簽塊的內(nèi)部使用{% empty %}, 它表示當(dāng)要遍歷的對象不存在或為空時輸出的內(nèi)容。

示例:

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

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

6、標(biāo)簽:if

if標(biāo)簽用于構(gòu)造條件分支,其基本結(jié)構(gòu)如下

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

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

例如,下面的模塊根據(jù)分?jǐn)?shù)輸出等級:

分?jǐn)?shù):{{ 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中獲得分?jǐn)?shù)(格式為正式),request。GET['data']獲得的數(shù)據(jù)默認(rèn)為字符串格式,所以需要將其轉(zhuǎn)換為整數(shù)。如果未做轉(zhuǎn)換,Django會將其作為字符串,模板將輸出else標(biāo)簽部分的數(shù)據(jù)。

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

總結(jié)

到此這篇關(guān)于Django模塊學(xué)習(xí)之模塊語言的文章就介紹到這了,更多相關(guān)Django模塊語言內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中局部變量和全局變量舉例詳解

    Python中局部變量和全局變量舉例詳解

    這篇文章主要介紹了如何通過一個簡單的Python代碼示例來解釋命名空間和作用域的概念,它詳細(xì)說明了內(nèi)置名稱、全局名稱、局部名稱以及它們之間的查找順序,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • Python快速排序算法實例分析

    Python快速排序算法實例分析

    這篇文章主要介紹了Python快速排序算法,簡單說明了快速排序算法的原理、實現(xiàn)步驟,并結(jié)合具體實例分析了Python實現(xiàn)快速排序的相關(guān)操作技巧,需要的朋友可以參考下
    2017-11-11
  • Django ORM外鍵查詢與反向查詢技巧

    Django ORM外鍵查詢與反向查詢技巧

    Django 的 ORM(對象關(guān)系映射)是其最強(qiáng)大的功能之一,它使得數(shù)據(jù)庫操作變得直觀和簡潔,在復(fù)雜的數(shù)據(jù)庫結(jié)構(gòu)中,外鍵(Foreign Key)的使用及其對應(yīng)的反向查詢是 Django 開發(fā)中不可或缺的部分,本文將詳細(xì)介紹如何在 Django 中利用外鍵進(jìn)行數(shù)據(jù)查詢以及執(zhí)行反向查詢
    2023-11-11
  • Django MTV和MVC的區(qū)別詳解

    Django MTV和MVC的區(qū)別詳解

    這篇文章主要介紹了Django MTV和MVC的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • python中os庫的函數(shù)使用

    python中os庫的函數(shù)使用

    這篇文章主要介紹了python中os庫的使用,本篇文章記錄下python中os庫的一些函數(shù)使用,對python?os庫使用感興趣的朋友跟隨小編一起看看吧
    2022-10-10
  • python 將json數(shù)據(jù)提取轉(zhuǎn)化為txt的方法

    python 將json數(shù)據(jù)提取轉(zhuǎn)化為txt的方法

    今天小編就為大家分享一篇python 將json數(shù)據(jù)提取轉(zhuǎn)化為txt的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • python自定義類并使用的方法

    python自定義類并使用的方法

    這篇文章主要介紹了python自定義類并使用的方法,涉及Python中類的定義與使用技巧,需要的朋友可以參考下
    2015-05-05
  • python二維列表一維列表的互相轉(zhuǎn)換實例

    python二維列表一維列表的互相轉(zhuǎn)換實例

    今天小編就為大家分享一篇python二維列表一維列表的互相轉(zhuǎn)換實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • python函數(shù)形參用法實例分析

    python函數(shù)形參用法實例分析

    這篇文章主要介紹了python函數(shù)形參用法,較為詳細(xì)的講述了Python函數(shù)形參的功能、定義及使用技巧,需要的朋友可以參考下
    2015-08-08
  • PyTorch中apex安裝方式和避免踩坑

    PyTorch中apex安裝方式和避免踩坑

    本文主要介紹了PyTorch中apex安裝方式和避免踩坑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07

最新評論

金门县| 西盟| 海晏县| 洛隆县| 鞍山市| 玉环县| 陇川县| 文水县| 高平市| 通州市| 兰西县| 卓尼县| 凤庆县| 屏东市| 通州区| 汾阳市| 马关县| 滨海县| 巴林左旗| 武隆县| 措勤县| 盐亭县| 朝阳市| 抚顺市| 水富县| 南乐县| 卓资县| 和政县| 如东县| 大新县| 郓城县| 三河市| 门源| 南部县| 和顺县| 奇台县| 崇阳县| 清苑县| 鄂州市| 高邑县| 文登市|