我有点困惑,因为当我使用通用ListView类时,Django正在“appname / templates”文件夹中查找“appname / objectname_list.html”。这导致:
appname/templates/appname/objectname_list.html
如果我提供“template_name”,则不再需要templates文件夹中的子文件夹。
为什么不在1.3之前的“templates”文件夹中找到objectname_list.html?我是否配置了错误或者他们是否更改了我应该放置模板的地方?在1.3中,我曾经将模板html文件直接放在“appname / templates”中,而不是使用子文件夹。
对我来说,使用另一个带有应用程序名称的子文件夹是没有意义的,其中templates文件夹已经存在。或者我错过了一些有用的东西?
我在发行说明中找不到任何相关内容。
答案 0 :(得分:5)
我认为这不是1.4具体的。如果您希望将模板放在子文件夹中,请指定template_name = 'subfolde/template.html'
关于模板目录,来自docs:
...对于每个应用程序 INSTALLED_APPS,加载器查找模板子目录。如果 目录存在,Django在那里寻找模板。
所以实际的目录是:
projectname/appname/templates/appname/objectname_list.html
^^^ ^^^
这有助于您将所有内容保存在app文件夹中,并且不需要您配置任何内容,
这也意味着如果你有应用foo
,bar
和baz
,你仍然可以在其中一个应用下拥有一个templates
目录:
myproj/foo/templates/foo/...
myproj/foo/templates/bar/...
myproj/foo/templates/baz/...