在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ Django模板系統(tǒng)
Django Session會(huì)話
Django創(chuàng)建視圖
Django教程
Django表單處理
Django創(chuàng)建工程
Django Cookies處理
Django快速入門(mén)-表單
Django管理員界面
Django快速入門(mén)
Django通用視圖
Django緩存
Django Apache配置
Django發(fā)送E-mail
Django模板系統(tǒng)
Django模型
Django基礎(chǔ)
Django RSS
Django Ajax應(yīng)用
Django快速入門(mén)-視圖
Django上傳文件
Django頁(yè)面重定向
Django開(kāi)發(fā)環(huán)境安裝配置
Django快速入門(mén)-數(shù)據(jù)庫(kù)模型
Django URL映射
Django生命周期

Django模板系統(tǒng)

Django能夠單獨(dú)分開(kāi) Python 和 HTML,Python代碼/變量進(jìn)入視圖和HTML模板。 連接這兩個(gè),Django依賴于渲染函數(shù)和Django模板語(yǔ)言。

渲染函數(shù)

這個(gè)函數(shù)有三個(gè)參數(shù) ?

  • 請(qǐng)求? 初始化請(qǐng)求

  • 模板路徑 ? 這是相對(duì)于在項(xiàng)目 settings.py 文件的變量到 TEMPLATE_DIRS 選項(xiàng)的路徑。

  • 參數(shù)字典 ? 字典包含所需的模板中的所有變量。這個(gè)變量可以創(chuàng)建或者可以使用 locals() 通過(guò)在視圖中聲明的所有局部變量。

Django模板語(yǔ)言(DTL)

Django模板引擎提供了一個(gè)小型的語(yǔ)言來(lái)定義應(yīng)用程序面向用戶的層。

顯示變量

變量顯示如下:{{variable}}. 模板由視圖在渲染(render)函數(shù)的第三個(gè)參數(shù)發(fā)送的變量來(lái)替換變量。讓我們改變 hello.html 顯示當(dāng)天的日期 :

hello.html

<html>   
   <body>
      Hello World!!!<p>Today is {{today}}</p>
   </body>   
</html>
然后,我們的視圖將改變?yōu)?-
def hello(request):
   today = datetime.datetime.now().date()
   return render(request, "hello.html", {"today" : today}) 

現(xiàn)在,我們將得到下面的輸出在訪問(wèn)URL /myapp/hello 之后?

Hello World!!!
Today is Sept. 11, 2015 

正如你可能已經(jīng)注意到,如果變量不是一個(gè)字符串,Django會(huì)使用__str__方法來(lái)顯示它;并以同樣的原則,你可以訪問(wèn)對(duì)象的屬性,就像在Python中使用的一樣。例如:如果我們想顯示日期的年份,這里的變量是: {{today.year}}.

過(guò)濾器

它們可以幫助您顯示修改的變量。過(guò)濾器的結(jié)構(gòu)如下所示: {{var|filters}}.

一個(gè)簡(jiǎn)單的實(shí)例 ?

  • {{string|truncatewords:80}} ? 過(guò)濾器將截?cái)嘧址?,所以只看到?0個(gè)字符。

  • {{string|lower}} ? 轉(zhuǎn)換字符為小寫(xiě)

  • {{string|escape|linebreaks}} ? 轉(zhuǎn)義字符串內(nèi)容,然后換行轉(zhuǎn)換為標(biāo)簽。

還可以設(shè)置默認(rèn)的變量。

標(biāo)簽

標(biāo)簽可以執(zhí)行以下操作:if 條件,for循環(huán),模板繼承以及更多。

if標(biāo)簽

就像在Python中,你可以使用if,else和elif在模板中 ?

<html>
   <body>
   
      Hello World!!!<p>Today is {{today}}</p>
      We are
      {% if today.day == 1 %}
      
      the first day of month.
      {% elif today == 30 %}
      
      the last day of month.
      {% else %}
      
      I don't know.
      {%endif%}
      
   </body>
</html>
在這個(gè)新的模板,根據(jù)當(dāng)天的日期,該模板將呈現(xiàn)這個(gè)值。

for標(biāo)簽

就像'if',我們有 'for' 標(biāo)簽,這些完全像在Python中一樣使用它們。讓我們改變 hello視圖列表發(fā)送到我們的模板 ?

def hello(request):
   today = datetime.datetime.now().date()
   
   daysOfWeek = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
   return render(request, "hello.html", {"today" : today, "days_of_week" : daysOfWeek}) 

該模板用來(lái)顯示列表 {{ for }} ?

<html>
   <body>
      
      Hello World!!!<p>Today is {{today}}</p>
      We are
      {% if today.day == 1 %}
      
      the first day of month.
      {% elif today == 30 %}
      
      the last day of month.
      {% else %}
      
      I don't know.
      {%endif%}
      
      <p>
         {% for day in days_of_week %}
         {{day}}
      </p>
		
      {% endfor %}
      
   </body>
</html> 

我們應(yīng)該得到輸出的內(nèi)容如下 ?

Hello World!!!
Today is Sept. 11, 2015
We are I don't know.
Mon
Tue
Wed
Thu
Fri
Sat
Sun

塊和擴(kuò)展標(biāo)簽

模板系統(tǒng)是不完整模板繼承。當(dāng)您設(shè)計(jì)模板的含義,子模板會(huì)根據(jù)自己的需要填寫(xiě)一個(gè)主模板,就像一個(gè)頁(yè)面中所選選項(xiàng)卡可能需要一個(gè)特殊的CSS。

讓我們修改 hello.html 模板來(lái)從 main_template.html 繼承。

main_template.html

<html>
   <head>      
      <title>
         {% block title %}Page Title{% endblock %}
      </title>      
   </head>
	
   <body>   
      {% block content %}
         Body content
      {% endblock %}      
   </body>
</html>

hello.html

{% extends "main_template.html" %}
{% block title %}My Hello Page{% endblock %}
{% block content %}

Hello World!!!<p>Today is {{today}}</p>
We are
{% if today.day == 1 %}

the first day of month.
{% elif today == 30 %}

the last day of month.
{% else %}

I don't know.
{%endif%}

<p>
   {% for day in days_of_week %}
   {{day}}
</p>

{% endfor %}
{% endblock %}

在上面的示例, 在調(diào)用 /myapp/hello,我們?nèi)匀粫?huì)得到相同的結(jié)果和以前一樣,但現(xiàn)在我們靠的是擴(kuò)展,并不用重構(gòu)代碼-?

在 main_template.html 我們定義使用標(biāo)簽塊。標(biāo)題欄塊將包含頁(yè)面標(biāo)題,以及內(nèi)容塊將在頁(yè)面主內(nèi)容。在Home.html中使用擴(kuò)展繼承來(lái)自main_template.html,那么我們使用上面塊定義(內(nèi)容和標(biāo)題)。

注釋標(biāo)簽

注釋標(biāo)簽用來(lái)模板定義注釋?zhuān)皇荋TML注釋?zhuān)鼈儗⒉粫?huì)出現(xiàn)在HTML頁(yè)面。它可以是一個(gè)文件或只是注釋一行代碼。


上一篇:Django Cookies處理下一篇:Django RSS