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

在Python的Django框架中加載模版的方法

 更新時(shí)間:2015年07月16日 12:02:41   投稿:goldensun  
這篇文章主要介紹了在Python的Django框架中加載模版的方法,是Django使用中的基本操作,需要的朋友可以參考下

為了減少模板加載調(diào)用過(guò)程及模板本身的冗余代碼,Django 提供了一種使用方便且功能強(qiáng)大的 API ,用于從磁盤中加載模板,

要使用此模板加載API,首先你必須將模板的保存位置告訴框架。 設(shè)置的保存文件就是settings.py。

如果你是一步步跟隨我們學(xué)習(xí)過(guò)來(lái)的,馬上打開(kāi)你的settings.py配置文件,找到TEMPLATE_DIRS這項(xiàng)設(shè)置吧。 它的默認(rèn)設(shè)置是一個(gè)空元組(tuple),加上一些自動(dòng)生成的注釋。

TEMPLATE_DIRS = (
 # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
 # Always use forward slashes, even on Windows.
 # Don't forget to use absolute paths, not relative paths.
)

該設(shè)置告訴 Django 的模板加載機(jī)制在哪里查找模板。 選擇一個(gè)目錄用于存放模板并將其添加到 TEMPLATE_DIRS 中:

TEMPLATE_DIRS = (
 '/home/django/mysite/templates',
)

下面是一些注意事項(xiàng):

    你可以任意指定想要的目錄,只要運(yùn)行 Web 服務(wù)器的用戶可以讀取該目錄的子目錄和模板文件。 如果實(shí)在想不出合適的位置來(lái)放置模板,我們建議在 Django 項(xiàng)目中創(chuàng)建一個(gè) templates 目錄。

    如果你的 TEMPLATE_DIRS只包含一個(gè)目錄,別忘了在該目錄后加上個(gè)逗號(hào)。 

Bad:


# Missing comma!
TEMPLATE_DIRS = (
 '/home/django/mysite/templates'
)

 
Good:

# Comma correctly in place.
TEMPLATE_DIRS = (
 '/home/django/mysite/templates',
)

    Python 要求單元素元組中必須使用逗號(hào),以此消除與圓括號(hào)表達(dá)式之間的歧義。 這是新手常犯的錯(cuò)誤。

    如果使用的是 Windows 平臺(tái),請(qǐng)包含驅(qū)動(dòng)器符號(hào)并使用Unix風(fēng)格的斜杠(/)而不是反斜杠(),就像下面這樣:

TEMPLATE_DIRS = (
 'C:/www/django/templates',
)

    最省事的方式是使用絕對(duì)路徑(即從文件系統(tǒng)根目錄開(kāi)始的目錄路徑)。 如果想要更靈活一點(diǎn)并減少一些負(fù)面干擾,可利用 Django 配置文件就是 Python 代碼這一點(diǎn)來(lái)動(dòng)態(tài)構(gòu)建 TEMPLATE_DIRS 的內(nèi)容,如: 例如:

import os.path

TEMPLATE_DIRS = (
 os.path.join(os.path.dirname(__file__), 'templates').replace('\\','/'),
)

    這個(gè)例子使用了神奇的 Python 內(nèi)部變量 __file__ ,該變量被自動(dòng)設(shè)置為代碼所在的 Python 模塊文件名。 `` os.path.dirname(__file__)`` 將會(huì)獲取自身所在的文件,即settings.py 所在的目錄,然后由os.path.join 這個(gè)方法將這目錄與 templates 進(jìn)行連接。如果在windows下,它會(huì)智能地選擇正確的后向斜杠”“進(jìn)行連接,而不是前向斜杠”/”。

    在這里我們面對(duì)的是動(dòng)態(tài)語(yǔ)言python代碼,我需要提醒你的是,不要在你的設(shè)置文件里寫入錯(cuò)誤的代碼,這很重要。 如果你在這里引入了語(yǔ)法錯(cuò)誤,或運(yùn)行錯(cuò)誤,你的Django-powered站點(diǎn)將很可能就要被崩潰掉。

完成 TEMPLATE_DIRS 設(shè)置后,下一步就是修改視圖代碼,讓它使用 Django 模板加載功能而不是對(duì)模板路徑硬編碼。 返回 current_datetime 視圖,進(jìn)行如下修改:

from django.template.loader import get_template
from django.template import Context
from django.http import HttpResponse
import datetime

def current_datetime(request):
 now = datetime.datetime.now()
 t = get_template('current_datetime.html')
 html = t.render(Context({'current_date': now}))
 return HttpResponse(html)

此范例中,我們使用了函數(shù) django.template.loader.get_template() ,而不是手動(dòng)從文件系統(tǒng)加載模板。 該 get_template() 函數(shù)以模板名稱為參數(shù),在文件系統(tǒng)中找出模塊的位置,打開(kāi)文件并返回一個(gè)編譯好的 Template 對(duì)象。

在這個(gè)例子里,我們選擇的模板文件是current_datetime.html,但這個(gè)與.html后綴沒(méi)有直接的聯(lián)系。 你可以選擇任意后綴的任意文件,只要是符合邏輯的都行。甚至選擇沒(méi)有后綴的文件也不會(huì)有問(wèn)題。

要確定某個(gè)模板文件在你的系統(tǒng)里的位置, get_template()方法會(huì)自動(dòng)為你連接已經(jīng)設(shè)置的 TEMPLATE_DIRS目錄和你傳入該法的模板名稱參數(shù)。比如,你的 TEMPLATE_DIRS目錄設(shè)置為 '/home/django/mysite/templates',上面的 get_template()調(diào)用就會(huì)為你找到 /home/django/mysite/templates/current_datetime.html 這樣一個(gè)位置。

如果 get_template() 找不到給定名稱的模板,將會(huì)引發(fā)一個(gè) TemplateDoesNotExist 異常。 要了解究竟會(huì)發(fā)生什么,讓我們按照第三章內(nèi)容,在 Django 項(xiàng)目目錄中運(yùn)行 python manage.py runserver 命令,再次啟動(dòng)Django開(kāi)發(fā)服務(wù)器。 接著,告訴你的瀏覽器,使其定位到指定頁(yè)面以激活current_datetime視圖(如 http://127.0.0.1:8000/time/ )。假設(shè)你的 DEBUG項(xiàng)設(shè)置為 True,而你有沒(méi)有建立current_datetime.html 這個(gè)模板文件,你會(huì)看到Django的錯(cuò)誤提示網(wǎng)頁(yè),告訴你發(fā)生了 TemplateDoesNotExist 錯(cuò)誤。

Screenshot of a TemplateDoesNotExist error.

該頁(yè)面與我們?cè)诘谌陆忉屵^(guò)的錯(cuò)誤頁(yè)面相似,只不過(guò)多了一塊調(diào)試信息區(qū): 模板加載器事后檢查區(qū)。 該區(qū)域顯示 Django 要加載哪個(gè)模板、每次嘗試出錯(cuò)的原因(如:文件不存在等)。 當(dāng)你嘗試調(diào)試模板加載錯(cuò)誤時(shí),這些信息會(huì)非常有幫助。

接下來(lái),在模板目錄中創(chuàng)建包括以下模板代碼 current_datetime.html 文件:

<html><body>It is now {{ current_date }}.</body></html>

在網(wǎng)頁(yè)瀏覽器中刷新該頁(yè),你將會(huì)看到完整解析后的頁(yè)面。

相關(guān)文章

  • python快排算法詳解

    python快排算法詳解

    在本篇內(nèi)容里小編給大家整理了關(guān)于python快排算法的相關(guān)知識(shí)點(diǎn)內(nèi)基礎(chǔ)內(nèi)容,需要的朋友們學(xué)習(xí)下。
    2019-03-03
  • pyecharts如何旋轉(zhuǎn)折線圖的X軸標(biāo)簽

    pyecharts如何旋轉(zhuǎn)折線圖的X軸標(biāo)簽

    這篇文章主要介紹了pyecharts如何旋轉(zhuǎn)折線圖的X軸標(biāo)簽,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • python爬蟲簡(jiǎn)單的添加代理進(jìn)行訪問(wèn)的實(shí)現(xiàn)代碼

    python爬蟲簡(jiǎn)單的添加代理進(jìn)行訪問(wèn)的實(shí)現(xiàn)代碼

    本文通過(guò)實(shí)例代碼給大家介紹了python爬蟲簡(jiǎn)單的添加代理進(jìn)行訪問(wèn),代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • Python中的優(yōu)先隊(duì)列(priority?queue)和堆(heap)

    Python中的優(yōu)先隊(duì)列(priority?queue)和堆(heap)

    這篇文章主要介紹了Python中的優(yōu)先隊(duì)列(priority?queue)和堆(heap),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • python讀寫文件操作示例程序

    python讀寫文件操作示例程序

    日常操作中,少不了文本處理,如程序輸入數(shù)據(jù)準(zhǔn)備,python憑借其簡(jiǎn)潔優(yōu)雅的語(yǔ)法,在文本處理上比C++等編譯型語(yǔ)言開(kāi)發(fā)效率高出一大截,下面看代碼
    2013-12-12
  • Python中使用PyHook監(jiān)聽(tīng)鼠標(biāo)和鍵盤事件實(shí)例

    Python中使用PyHook監(jiān)聽(tīng)鼠標(biāo)和鍵盤事件實(shí)例

    這篇文章主要介紹了Python中使用PyHook監(jiān)聽(tīng)鼠標(biāo)和鍵盤事件實(shí)例,這個(gè)庫(kù)依賴于另一個(gè)Python庫(kù)PyWin32,并且只能運(yùn)行在Windows平臺(tái),需要的朋友可以參考下
    2014-07-07
  • 關(guān)于Word2Vec可視化展示

    關(guān)于Word2Vec可視化展示

    這篇文章主要介紹了關(guān)于Word2Vec可視化展示,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • django 創(chuàng)建過(guò)濾器的實(shí)例詳解

    django 創(chuàng)建過(guò)濾器的實(shí)例詳解

    這篇文章主要介紹了django 創(chuàng)建過(guò)濾器的實(shí)例詳解的相關(guān)資料,主要說(shuō)明django 創(chuàng)建過(guò)濾器來(lái)統(tǒng)一處理字符串,需要的朋友可以參考下
    2017-08-08
  • 關(guān)于文件Permission denied解決方案(pip)

    關(guān)于文件Permission denied解決方案(pip)

    這篇文章主要介紹了文件Permission denied解決方案(pip),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Python實(shí)現(xiàn)生成隨機(jī)日期字符串的方法示例

    Python實(shí)現(xiàn)生成隨機(jī)日期字符串的方法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)生成隨機(jī)日期字符串的方法,涉及Python日期時(shí)間及隨機(jī)數(shù)運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12

最新評(píng)論

连州市| 广饶县| 凤翔县| 桂东县| 阜城县| 吉安县| 凤庆县| 柯坪县| 北票市| 阿拉尔市| 宜川县| 乌兰察布市| 和平县| 库尔勒市| 栾城县| 宝应县| 舟山市| 泰安市| 夹江县| 肇庆市| 莱西市| 亳州市| 绥德县| 盱眙县| 扎鲁特旗| 呼伦贝尔市| 托里县| 龙口市| 府谷县| 嘉定区| 乐至县| 南安市| 任丘市| 谢通门县| 惠水县| 安西县| 广河县| 佛山市| 遂溪县| 双柏县| 汤原县|