2012-04-07 116 views
4

我有點困惑,因爲當我使用通用的ListView類,Django是尋找「APPNAME/objectname_list.html」裏面的「APPNAME /模板」文件夾中。結果如下:在Django 1.4中放置模板的位置?

appname/templates/appname/objectname_list.html 

如果我提供「template_name」,它不再需要模板文件夾中的子文件夾了。

爲什麼沒有找到它在1.3的「模板」文件夾中的objectname_list.html像以前一樣?我是否配置了錯誤的內容或者是否改變了我應該放置模板的地方?在1.3中,我直接將模板html文件放在「appname/templates」中,而不是使用子文件夾。

對我來說沒有任何意義使用另一個子文件夾與應用程序的名稱,其中的模板文件夾已經處於,或者我失去了一些有用的東西?

我找不到關於它的發行說明什麼。

回答

5

我不認爲這是特定的1.4。如果你將要在一個子文件夾模板,指定template_name = 'subfolde/template.html'

關於模板迪爾斯,從docs

...對於 INSTALLED_APPS每個應用程序,加載程序查找一個templates子目錄。如果存在 目錄,則Django會在其中查找模板。

所以實際dir是:

projectname/appname/templates/appname/objectname_list.html 
      ^^^    ^^^ 

這可以幫助你把一切都在app文件夾內,不需要你進行任何配置,

這也意味着,如果你有應用foobarbaz,您仍然可以在其中一個應用中指定一個templates目標:

myproj/foo/templates/foo/... 
myproj/foo/templates/bar/... 
myproj/foo/templates/baz/... 
+4

那麼附加的子文件夾有什麼用?是否可以將模板更容易地粘貼到另一個地方?多次使用該appname看起來很奇怪。 – JasonTS 2012-04-07 12:53:16

+1

它可以讓你重寫/修改另一個應用程序的模板,即'的Myproj /富/模板/管理/ base_site.html' – Udi 2012-04-07 12:59:08

+1

是不是很亂?我知道子文件夾在projname/templates/appname/template.py中很有用。 但是,花葯內的一個應用程序的重寫模板非常糾結它們。 無論如何,非常感謝你! – JasonTS 2012-04-07 13:10:43