2012-04-07 117 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