国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

在Python的Django框架中創(chuàng)建和使用模版

2019-11-25 17:11:11
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

如何使用模板系統(tǒng)

讓我們深入研究模板系統(tǒng),你將會(huì)明白它是如何工作的。但我們暫不打算將它與先前創(chuàng)建的視圖結(jié)合在一起,因?yàn)槲覀儸F(xiàn)在的目的是了解它是如何獨(dú)立工作的。 。 (換言之, 通常你會(huì)將模板和視圖一起使用,但是我們只是想突出模板系統(tǒng)是一個(gè)Python庫(kù),你可以在任何地方使用它,而不僅僅是在Django視圖中。)

在Python代碼中使用Django模板的最基本方式如下:

  •     可以用原始的模板代碼字符串創(chuàng)建一個(gè) Template 對(duì)象, Django同樣支持用指定模板文件路徑的方式來(lái)創(chuàng)建 Template 對(duì)象;
  •     調(diào)用模板對(duì)象的render方法,并且傳入一套變量context。它將返回一個(gè)基于模板的展現(xiàn)字符串,模板中的變量和標(biāo)簽會(huì)被context值替換。

代碼如下:

>>> from django import template>>> t = template.Template('My name is {{ name }}.')>>> c = template.Context({'name': 'Adrian'})>>> print t.render(c)My name is Adrian.>>> c = template.Context({'name': 'Fred'})>>> print t.render(c)My name is Fred.

以下部分逐步的詳細(xì)介紹
創(chuàng)建模板對(duì)象

創(chuàng)建一個(gè) Template 對(duì)象最簡(jiǎn)單的方法就是直接實(shí)例化它。 Template 類就在 django.template 模塊中,構(gòu)造函數(shù)接受一個(gè)參數(shù),原始模板代碼。 讓我們深入挖掘一下 Python的解釋器看看它是怎么工作的。

轉(zhuǎn)到project目錄(在第二章由 django-admin.py startproject 命令創(chuàng)建), 輸入命令 python manage.py shell 啟動(dòng)交互界面。

一個(gè)特殊的Python提示符

如果你曾經(jīng)使用過(guò)Python,你一定好奇,為什么我們運(yùn)行python manage.py shell而不是python。這兩個(gè)命令都會(huì)啟動(dòng)交互解釋器,但是manage.py shell命令有一個(gè)重要的不同: 在啟動(dòng)解釋器之前,它告訴Django使用哪個(gè)設(shè)置文件。 Django框架的大部分子系統(tǒng),包括模板系統(tǒng),都依賴于配置文件;如果Django不知道使用哪個(gè)配置文件,這些系統(tǒng)將不能工作。

如果你想知道,這里將向你解釋它背后是如何工作的。 Django搜索DJANGO_SETTINGS_MODULE環(huán)境變量,它被設(shè)置在settings.py中。例如,假設(shè)mysite在你的Python搜索路徑中,那么DJANGO_SETTINGS_MODULE應(yīng)該被設(shè)置為:'mysite.settings'。

當(dāng)你運(yùn)行命令:python manage.py shell,它將自動(dòng)幫你處理DJANGO_SETTINGS_MODULE。 在當(dāng)前的這些示例中,我們鼓勵(lì)你使用`` python manage.py shell``這個(gè)方法,這樣可以免去你大費(fèi)周章地去配置那些你不熟悉的環(huán)境變量。

隨著你越來(lái)越熟悉Django,你可能會(huì)偏向于廢棄使用`` manage.py shell`` ,而是在你的配置文件.bash_profile中手動(dòng)添加 DJANGO_SETTINGS_MODULE這個(gè)環(huán)境變量。

讓我們來(lái)了解一些模板系統(tǒng)的基本知識(shí):

>>> from django.template import Template>>> t = Template('My name is {{ name }}.')>>> print t

如果你跟我們一起做,你將會(huì)看到下面的內(nèi)容:

<django.template.Template object at 0xb7d5f24c>

0xb7d5f24c 每次都會(huì)不一樣,這沒(méi)什么關(guān)系;這只是Python運(yùn)行時(shí) Template 對(duì)象的ID。

當(dāng)你創(chuàng)建一個(gè) Template 對(duì)象,模板系統(tǒng)在內(nèi)部編譯這個(gè)模板到內(nèi)部格式,并做優(yōu)化,做好 渲染的準(zhǔn)備。 如果你的模板語(yǔ)法有錯(cuò)誤,那么在調(diào)用 Template() 時(shí)就會(huì)拋出 TemplateSyntaxError 異常:

>>> from django.template import Template>>> t = Template('{% notatag %}')Traceback (most recent call last): File "<stdin>", line 1, in ? ...django.template.TemplateSyntaxError: Invalid block tag: 'notatag'

這里,塊標(biāo)簽(block tag)指向的是`` {% notatag %}``,塊標(biāo)簽與模板標(biāo)簽是同義的。

系統(tǒng)會(huì)在下面的情形拋出 TemplateSyntaxError 異常:

  •     無(wú)效的tags
  •     標(biāo)簽的參數(shù)無(wú)效
  •     無(wú)效的過(guò)濾器
  •     過(guò)濾器的參數(shù)無(wú)效
  •     無(wú)效的模板語(yǔ)法
  •     未封閉的塊標(biāo)簽 (針對(duì)需要封閉的塊標(biāo)簽)


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 南陵县| 行唐县| 板桥市| 利辛县| 绥江县| 西丰县| 太白县| 中西区| 凤凰县| 扶余县| 芒康县| 涞源县| 崇州市| 滦平县| 阿鲁科尔沁旗| 宾阳县| 佛教| 宁武县| 灌云县| 鹤峰县| 四川省| 文安县| 乌鲁木齐县| 夹江县| 穆棱市| 乌恰县| 梅州市| 绥滨县| 墨江| 罗江县| 同仁县| 九台市| 仁化县| 都安| 阳城县| 闽侯县| 四平市| 丘北县| 九龙坡区| 防城港市| 邳州市|