在Django 1.4中放置模板的位置?

Jas*_*nTS 4 python django frameworks

我有点困惑,因为当我使用通用ListView类时,Django正在"appname/templates"文件夹中查找"appname/objectname_list.html".这导致:

appname/templates/appname/objectname_list.html
Run Code Online (Sandbox Code Playgroud)

如果我提供"template_name",它不再需要templates文件夹中的子文件夹.

为什么不在1.3之前的"templates"文件夹中找到objectname_list.html?我是否配置了错误或者他们是否更改了我应该放置模板的地方?在1.3中,我曾经将模板html文件直接放在"appname/templates"中,而不是使用子文件夹.

对我来说,使用另一个带有应用程序名称的子文件夹是没有意义的,模板文件夹已经在其中.或者我错过了一些有用的东西?

我在发行说明中找不到任何相关内容.

Udi*_*Udi 5

我不认为这是1.4特定的.如果您希望将模板放在子文件夹中,请指定template_name = 'subfolde/template.html'

关于模板目录,来自文档:

...对于INSTALLED_APPS中的每个应用程序,加载程序都会查找模板子目录.如果目录存在,Django会在那里查找模板.

所以实际的目的是:

projectname/appname/templates/appname/objectname_list.html
            ^^^               ^^^
Run Code Online (Sandbox Code Playgroud)

这有助于您将所有内容保存在app文件夹中,并且不需要您配置任何内容,

这也意味着如果您有应用程序foo,bar并且baz您仍然可以templates在其中一个应用程序下拥有一个目录:

myproj/foo/templates/foo/...
myproj/foo/templates/bar/...
myproj/foo/templates/baz/...
Run Code Online (Sandbox Code Playgroud)

  • 那么附加子文件夹的用途是什么?是这样我可以将模板更容易地剪切和粘贴到另一个地方吗?多次使用appname看起来很奇怪. (4认同)