[英]Django templates lookup order
我正在編寫一個使用django-floppyforms
的應用程序。 此外,我的應用程序提供默認的twitter bootstrap
皮膚,所以我已經在我的應用程序中自定義了floppyforms模板,使它們成為引導程序。 我將floppyforms/{layouts, rows}/bootstrap
放入我的應用程序的模板目錄中。 但它不起作用:django不會使用它們。 因此,我不想強制最終用戶將自定義模板放入他的項目中,事實上,我想指出django在呈現應用內內容時使用我的本地floppyforms
模板。 我只想讓我的應用程序獨立,沒有任何不方便的依賴。
現在我遇到了與django-admintools-bootstrap和Django 1.5.1
類似的麻煩。 它是在INSTALLED_APPS
admin_tools
之前添加的,但沒有任何效果。 它也不會為django-admintools-bootstrap
收集靜態。 在使用這兩個軟件包和Django 1.4的其他類似項目中,一切正常。 此外,我已經檢查了Django 1.5的發行說明,以了解模板查找順序的更改,但沒有發現任何相關信息。
更新的答案:
從Django 1.8開始,不推薦使用TEMPLATE_DIRS
和TEMPLATE_LOADERS
,並將其替換為TEMPLATES
。
TEMPLATES
一個例子可以是:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR, 'templates'),
],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
# 'loaders': [
# 'django.template.loaders.filesystem.Loader',
# 'django.template.loaders.app_directories.Loader',
# ],
'debug': True,
},
},
]
模板查找順序由以下內容決定:
如果沒有加載器,並且如果定義了任何DIRS
,則這些優先級作為filesystem
加載器。
以上內容未明確記錄,但可以通過現有文檔輕松扣除,也許可以在一些實驗后進行。
如果它們不在apps模板目錄中,請在TEMPLATE_DIRS
設置中添加模板目錄的絕對路徑。 將按順序搜索這些目錄,因此請將它們添加到前面。
如果它們位於apps目錄中,您可能希望將'django.template.loaders.app_directories.Loader'
放在TEMPLATE_LOADERS
設置中的任何人之前。
另外,在指定模板時檢查模板名稱的使用方式。 您應該使用'floppyforms/layouts/bootstrap/template1.html'
。
有關模板加載器的更多信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.