亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

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

2020-01-04 18:03:42
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了在Python的Django框架中加載模版的方法,是Django使用中的基本操作,需要的朋友可以參考下

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

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

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

 

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

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

 

 
  1. TEMPLATE_DIRS = ( 
  2. '/home/django/mysite/templates'

下面是一些注意事項:

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

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

Bad:

 

 
  1. # Missing comma! 
  2. TEMPLATE_DIRS = ( 
  3. '/home/django/mysite/templates' 

Good:

 

 
  1. # Comma correctly in place. 
  2. TEMPLATE_DIRS = ( 
  3. '/home/django/mysite/templates'

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

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

 

 
  1. TEMPLATE_DIRS = ( 
  2. 'C:/www/django/templates'

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

 

 
  1. import os.path 
  2.  
  3. TEMPLATE_DIRS = ( 
  4. os.path.join(os.path.dirname(__file__), 'templates').replace('//','/'), 

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

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

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

 

 
  1. from django.template.loader import get_template 
  2. from django.template import Context 
  3. from django.http import HttpResponse 
  4. import datetime 
  5.  
  6. def current_datetime(request): 
  7. now = datetime.datetime.now() 
  8. t = get_template('current_datetime.html'
  9. html = t.render(Context({'current_date': now})) 
  10. return HttpResponse(html) 

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

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

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

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

 

  
  1. Screenshot of a TemplateDoesNotExist error. 

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

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

 

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产日韩欧美综合久久| 久久久亚洲国产天美传媒修理工| 一个人看的www欧美| 欧美高清电影在线看| 日韩av高清不卡| 日韩一区二区福利| 91久久久久久久久久久久久| 亚洲综合中文字幕在线观看| 国产一区二区三区视频在线观看| 亚洲国产成人精品电影| 成人春色激情网| 成人av电影天堂| 亚洲性线免费观看视频成熟| 国产区精品在线观看| 日韩中文av在线| 亚洲系列中文字幕| 欧美wwwxxxx| 亚洲精品永久免费精品| 日韩在线视频播放| 亚洲天堂2020| 热99在线视频| 91久久久久久久一区二区| 欧美整片在线观看| 国产精品久久久久久久久久久不卡| 欧美体内谢she精2性欧美| 在线不卡国产精品| 成人免费xxxxx在线观看| 久久久999国产精品| 久久久噜噜噜久久| 欧美精品在线看| 97久久精品人人澡人人爽缅北| 欧美激情18p| 午夜伦理精品一区| 国内精品久久久久久久久| 国产日韩在线精品av| 亚洲精品少妇网址| 亚洲精品suv精品一区二区| 国产精品极品美女在线观看免费| 日韩精品免费一线在线观看| 亚洲高清一二三区| 国产拍精品一二三| 国产精品ⅴa在线观看h| 91精品视频免费看| 国产精品网红福利| 欧美精品久久久久久久免费观看| 国产成人精品视频在线| 国产精品成人一区二区| 精品欧美一区二区三区| 欧美成人自拍视频| 96sao精品视频在线观看| 黑人欧美xxxx| 九九视频直播综合网| 欧美精品一二区| 国产精品美女久久| 97国产精品久久| 久久6免费高清热精品| 欧美激情视频一区二区三区不卡| 中文字幕少妇一区二区三区| 日韩大片在线观看视频| 亚洲缚视频在线观看| 91啪国产在线| 欧美日本高清视频| 亚洲激情在线观看| 欧美激情欧美狂野欧美精品| 91在线观看免费网站| 中文字幕日韩精品在线观看| 在线观看不卡av| 日韩欧美在线观看视频| 亚洲午夜av电影| www国产亚洲精品久久网站| 成人性生交大片免费看视频直播| 欧美网站在线观看| 亚洲欧美日韩在线高清直播| 亚洲国产高清自拍| 一区二区三区精品99久久| 欧美性猛交xxxx富婆| 亚洲丝袜一区在线| 欧美性猛交视频| 性夜试看影院91社区| 欧美日本中文字幕| 曰本色欧美视频在线| 亚洲欧洲偷拍精品| 综合网中文字幕| 国产又爽又黄的激情精品视频| 欧美性猛交xxxx黑人猛交| 92看片淫黄大片欧美看国产片| 欧美国产日韩一区二区三区| 亚洲国产成人在线播放| 日韩成人在线播放| 欧美激情一级精品国产| 欧美另类交人妖| 国产拍精品一二三| 欧美久久久精品| 欧美成人激情视频| 欧美精品激情在线| 日本精品中文字幕| 欧美性jizz18性欧美| 国产精品成人av性教育| 国产精品网红直播| 成人免费视频网址| 久久在线视频在线| 国产丝袜一区二区三区免费视频| 日韩精品免费一线在线观看| 国产色视频一区| 国产成人精品a视频一区www| 5566日本婷婷色中文字幕97| 亚洲精品wwww| 91精品久久久久久久久久入口| 国产玖玖精品视频| 亚洲女人被黑人巨大进入al| 国产精品扒开腿做爽爽爽男男| 亚洲影视中文字幕| 亚洲wwwav| 精品网站999www| 久久久久日韩精品久久久男男| 欧美性猛交xxxx免费看久久久| 亚洲天堂第一页| 精品成人国产在线观看男人呻吟| 欧美日韩国产色视频| 亚洲午夜国产成人av电影男同| 91九色国产社区在线观看| 5566成人精品视频免费| 日本久久中文字幕| 亚洲欧洲中文天堂| 欧美国产日韩一区二区三区| 国产一区深夜福利| 欧美日韩国产综合新一区| 亚洲黄色www网站| 高清欧美一区二区三区| 日韩电影免费在线观看| 国产精品网红福利| 国产一区视频在线播放| 欧美巨大黑人极品精男| 狠狠色狠狠色综合日日五| 久久精品国产亚洲一区二区| 国产精品第2页| 日韩在线视频导航| 韩日欧美一区二区| 亚洲最大福利视频| 91久久精品国产91性色| 91wwwcom在线观看| 欧美精品在线播放| 久久久精品国产| 久久免费高清视频| 国产成人免费91av在线| 91免费看片网站| 狠狠做深爱婷婷久久综合一区| 中文字幕亚洲欧美一区二区三区| 81精品国产乱码久久久久久| 91香蕉亚洲精品| 亚洲视频在线免费看| 国产免费一区二区三区香蕉精| 国产成人自拍视频在线观看| 97国产精品免费视频| 91久久精品美女| 国产91色在线| 欧美成人免费网| 高清一区二区三区日本久| 性欧美xxxx| 91经典在线视频| 精品国产拍在线观看| 日本久久久久久久久| 亚洲自拍偷拍色图| 国产精品精品视频一区二区三区|