2012-10-11 87 views
0

我是django的新手,並通過做小應用程序來學習。 在views.py我有意包含了一個不存在的模板文件(.html)。模板加載位置

t = get_template('current_datetimeP.html') 
在setting.py TEMPLATE_DIRS =

( 「d:/ Django_Code/mysite的/模板/」, )

我在/時間/

的Django得到這個錯誤TemplateDoesNotExist嘗試加載這些模板,按以下順序: 使用loader django.template.loaders.filesystem.Loader: D:\ Django_Code \ mysite \ templates \ current_datetimeP.html(F ILE不存在)

,因爲我已經包括d:\ Django_Code \ mysite的\模板\ settings.py中以其優良的Django是尋找熱塑成型在那裏,但怎麼樣以下

我也得到這個

使用裝載機django.template.loaders.app_directories.Loader: C:\ Python27 \ LIB \站點包\ Django的\的contrib \權威性\模板\ current_datetimeP.html(文件不存在)

爲什麼 Django在這裏尋找* C:\ Python27 \ lib \ site-packages \ django \ contrib \ auth \ templates *。 它是搜索模板的默認位置嗎?

還有一件事,顯然Django正在上面的目錄中查找。我們可以放置模板文件而不是放入應用程序目錄。 (雖然這不是一個好習慣)?

回答

2

模板加載由TEMPLATE_LOADERS settings.py中設定,這通常看起來是這樣的控制:

TEMPLATE_LOADERS = (
    'django.template.loaders.app_directories.Loader', 
    'django.template.loaders.filesystem.Loader', 
) 

的應用程序目錄加載器查找模板中的「模板」文件夾中列出的任何應用程序在INSTALLED_APPS中設置。

文件系統加載程序嘗試從設置文件中的TEMPLATE_DIRS下列出的完全限定目錄路徑名稱加載模板。

如果您希望提供文件系統加載器首選項,請讓它位於TEMPLATE_LOADERS設置中的應用程序目錄加載器之前。如果您想關閉應用程序目錄加載,請使用#註釋掉它(或從元組中刪除它)。

+0

確定創建的模板路徑。但爲什麼它停在auth?還有其他應用程序也安裝了像'django.contrib.contenttypes',django.contrib.sessions等爲什麼它看起來在這些? – navyad

+0

它按照在INSTALLED_APPS中定義的順序遍歷已安裝的應用程序。你可以檢查並查看auth是否在django.contrib.contenttypes之後出現,反之亦然? –

+0

我的觀點是,如果找不到地方A,那麼它不應該在地方B,地點C等 – navyad

0

嘗試使用與settings.py位置

import os 
DIRNAME = os.path.dirname(__file__) 
TEMPLATE_DIRS = (
    os.path.join(DIRNAME, "templates"), 
) 


TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.load_template_source', 
'django.template.loaders.app_directories.load_template_source', 
) 
+0

D:\ Django_Code \ mysite \ templates \ mytemp.html(windows)。 DIRNAME =? – navyad

+0

TEMPLATE_DIRS =( #把字符串放在這裏,比如「/ home/html/django_templates」。 #'即使在Windows上也要使用正斜槓。 os.path.join(DIRNAME,「templates」), ) –