** 軟件環境:** windows7+Python2.7.9+Django1.8.2
今天在學到Django模板的時候,關于setting.py中配置模板路徑TEMPLATE_DIRS出現了一些問題。
一、模板應用實例
按照Django模板的指示,將在 HelloWorld 目錄底下創建 templates 目錄并建立 hello.html文件,整個目錄結構如下:
然后向Django說明模板文件的路徑,修改HelloWorld/settings.py,添加以下代碼:
Template dir
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, 'templates').replace('\','/'),
)
二、模板路徑問題
然后運行命令:
python manage.py runserver
再訪問 http://127.0.0.1:8000/hello/ ,可以看到頁面:
** 注意:** 根據錯誤提示信息,是加載templates的時候出現錯誤,直接去D:\study\Python2.7\lib\site-packages\django\contrib\admin\templates\hello.html找模板了。
三、解決思路:
1 我把hello.html文件復制到D:\study\Python2.7\lib\site-packages\django\contrib\admin\templates\目錄下,再訪問 http://127.0.0.1:8000/hello/ ,可以看到頁面:
這個結果讓我明白問題在于* 模板路徑TEMPLATE_DIRS * 。。
2 將templates文件夾放在E:\data_workspace\HelloWorld\HelloWorld目錄下。
然后訪問http://127.0.0.1:8000/hello/, 問題依然存在。
從上面可以看出,Template Loader沒有查找HelloWorld目錄。這說明HelloWold沒有映射到Django中。
3 修改HelloWorld/settings.py,添加以下代碼:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'HelloWorld',
)
4 然后訪問http://127.0.0.1:8000/hello/ ,問題解決,理解了模板的絕對路徑。
四、其他問題
** 絕對路徑 **
在windows下也可以設置成絕對路徑,將TEMPLATE_DIRS路徑設置為:
TEMPLATE_DIRS = ( ' E:\data_workspace\HelloWorld\HelloWorld\templates ',)
這種情況會出錯。
解決方案:
Windows用戶必須使用斜杠而不是反斜杠,所以只要需要改為即可
TEMPLATE_DIRS = ( ' E:/data_workspace/HelloWorld/HelloWorld/templates ',)