欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

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

系統(tǒng) 1615 0

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

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

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

            
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 的模板加載機制在哪里查找模板。 選擇一個目錄用于存放模板并將其添加到 TEMPLATE_DIRS 中:

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


          

下面是一些注意事項:

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

??? 如果你的 TEMPLATE_DIRS只包含一個目錄,別忘了在該目錄后加上個逗號。?

Bad:

            

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

 
          
Good:

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

            

??? Python 要求單元素元組中必須使用逗號,以此消除與圓括號表達式之間的歧義。 這是新手常犯的錯誤。

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

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


          

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

            
import os.path

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


          

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

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

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

            
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() ,而不是手動從文件系統(tǒng)加載模板。 該 get_template() 函數(shù)以模板名稱為參數(shù),在文件系統(tǒng)中找出模塊的位置,打開文件并返回一個編譯好的 Template 對象。

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

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

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

            
Screenshot of a TemplateDoesNotExist error.

          

該頁面與我們在第三章解釋過的錯誤頁面相似,只不過多了一塊調(diào)試信息區(qū): 模板加載器事后檢查區(qū)。 該區(qū)域顯示 Django 要加載哪個模板、每次嘗試出錯的原因(如:文件不存在等)。 當(dāng)你嘗試調(diào)試模板加載錯誤時,這些信息會非常有幫助。

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

            
It is now {{ current_date }}.


          

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


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 毛片特级 | 一级毛片a级| 一级黄色片播放 | 欧美综合视频 | 婷婷精品国产一区二区三区日韩 | 91欧美激情一区二区三区成人 | 成人黄色免费观看 | 欧美精品一区二区三区在线 | 婷婷色综合网 | 亚洲精品欧美综合四区 | 乳罩双性受给攻喂奶高h | 欧美国产中文 | 综合色久 | 欧美综合激情网 | 九九九热在线精品免费全部 | 欧美黄视频 | 国产欧美日韩一区二区三区四区 | 久久亚洲国产精品五月天婷 | 毛片特级| 国产一级免费在线视频 | 日韩av资源站 | 欧美浮力影院 | 欧美成人影院在线观看三级 | 全部三片在线观看直播 | 狠狠色噜噜狠狠狠狠2018 | 日韩电影免费在线观看中文字幕 | 欧美理论视频 | 欧美卡一卡二卡新区网站 | 成年人在线看片 | 精品免费久久久久国产一区 | 国内精品免费视频 | 91视频免费观看高清观看完整 | 国产视频福利 | 日本免费三级网站 | 日韩一区二区三区四区五区 | 美女视频黄色片 | 天天射天天搞 | 97色伦色在线综合视频 | 日韩字幕无线乱码 | 波多野吉衣一区二区 | 欧美高清hd |