新聞中心
語(yǔ)法
Django 模板是使用 Django 模板語(yǔ)言標(biāo)記的一個(gè)文本文檔或Python字符串。模板引擎可以識(shí)別和解釋一些構(gòu)造。主要是變量和標(biāo)簽。

在墨江等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶(hù)提供成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需搭建網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都全網(wǎng)營(yíng)銷(xiāo)推廣,外貿(mào)網(wǎng)站建設(shè),墨江網(wǎng)站建設(shè)費(fèi)用合理。
模板是通過(guò)上下文來(lái)渲染的。渲染用變量的值替換變量,變量的值在上下文中查找,并執(zhí)行標(biāo)簽。其他的一切都按原樣輸出。
Django 模板語(yǔ)言的語(yǔ)法涉及四個(gè)構(gòu)造。
變量
變量從上下文中輸出一個(gè)值,上下文是一個(gè)類(lèi)似于字典的對(duì)象,將鍵映射到值。
變量被 ?{{? 和? }} ?包圍,如下所示:
My first name is {{ first_name }}. My last name is {{ last_name }}.在上下文為 ?{'first_name': 'John', 'last_name': 'Doe'}? 的情況下,該模板渲染為:
My first name is John. My last name is Doe.字典查找,屬性查找和列表索引查找均以點(diǎn)符號(hào)實(shí)現(xiàn):
{{ my_dict.key }}
{{ my_object.attribute }}
{{ my_list.0 }}如果變量解析為可調(diào)用對(duì)象,則模板系統(tǒng)將不帶任何參數(shù)的情況下調(diào)用它,并使用其結(jié)果代替可調(diào)用對(duì)象。
標(biāo)簽
標(biāo)簽在渲染過(guò)程中提供了任意邏輯。
這個(gè)定義是故意含糊的。例如,標(biāo)簽可以輸出內(nèi)容,或用作控制結(jié)構(gòu)如?if?語(yǔ)句和 ?for ?循環(huán),或從數(shù)據(jù)庫(kù)中抓取內(nèi)容,甚至可以訪(fǎng)問(wèn)其他模板標(biāo)簽。
標(biāo)簽被 ?{%? 和 ?%}? 包圍,如下所示:
{% csrf_token %}大多數(shù)標(biāo)簽都接受參數(shù):
{% cycle 'odd' 'even' %}一些標(biāo)簽需要開(kāi)始和結(jié)束標(biāo)簽:
{% if user.is_authenticated %}Hello, {{ user.username }}.{% endif %}
過(guò)濾器
過(guò)濾器轉(zhuǎn)換變量和標(biāo)簽參數(shù)的值。
它們看起來(lái)像這樣:
{{ django|title }}在 ?{'django': 'the web framework for perfectionists with deadlines'}? 的上下文中,這個(gè)模板渲染為:
The Web Framework For Perfectionists With Deadlines有些過(guò)濾器需要一個(gè)參數(shù):
{{ my_date|date:"Y-m-d" }}
注釋
{# this won't be rendered #}?{% comment %}? 標(biāo)簽提供多行注釋。
組件
引擎
?django.template.Engine? 封裝了 Django 模板系統(tǒng)的實(shí)例。直接實(shí)例化 ?Engine ?的主要原因是為了在 Django 項(xiàng)目之外使用 Django 模板語(yǔ)言。
?django.template.backends.django.DjangoTemplates? 是一個(gè)簡(jiǎn)單封裝,使 ?django.template.Engine? 適應(yīng) Django 的模板后端API。
模板
?django.template.Template? 代表已編譯的模板。模板可以通過(guò) ?Engine.get_template()? 或 ?Engine.from_string()? 獲得。
同樣 ?django.template.backends.django.Template? 是一個(gè)簡(jiǎn)單封裝,使 ?django.template.Template? 適應(yīng)通用模板 API。
上下文
?django.template.Context? 除了上下文數(shù)據(jù)外,還保存了一些元數(shù)據(jù)。它被傳遞給 ?Template.render()? 來(lái)渲染模板。
?django.template.RequestContext? 是 ?Context ?的子類(lèi),它儲(chǔ)存當(dāng)前的 ?HttpRequest ?并運(yùn)行模板上下文處理器。
通用 API 沒(méi)有對(duì)應(yīng)的概念。上下文數(shù)據(jù)以普通的 ?dict ?傳遞,而當(dāng)前的 ?HttpRequest ?則根據(jù)需要單獨(dú)傳遞。
加載器
模板加載器負(fù)責(zé)定位模板,加載模板,并返回 ?Template ?對(duì)象。
Django 提供了幾個(gè) 內(nèi)建模板加載器 并且支持 自定義模板加載器。
上下文處理器
上下文處理器是接收當(dāng)前的 ?HttpRequest ?作為參數(shù),并返回一個(gè) ?dict ?的數(shù)據(jù)添加到渲染上下文的函數(shù)。
它們的主要用途是將所有模板共享的通用數(shù)據(jù)添加到上下文中,而無(wú)需在每個(gè)視圖中重復(fù)代碼。
Django 提供了許多 內(nèi)置上下文處理器,你也可以實(shí)現(xiàn)自己的其他上下文處理器。
網(wǎng)站標(biāo)題:創(chuàng)新互聯(lián)Django4.0教程:Django4.0模板-Django模板語(yǔ)言
路徑分享:http://www.5511xx.com/article/dpggdee.html


咨詢(xún)
建站咨詢(xún)
