【问题标题】:Where to put templates in Django 1.4?在 Django 1.4 中将模板放在哪里?
【发布时间】:2012-04-20 17:14:07
【问题描述】:

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

appname/templates/appname/objectname_list.html

如果我提供“template_name”,则不再需要模板文件夹中的子文件夹。

为什么它没有像以前在 1.3 中那样在“模板”文件夹中找到 objectname_list.html ?我是否配置了错误,或者他们是否也更改了我应该放置模板的位置?在 1.3 中,我曾经将模板 html 文件直接放在“appname/templates”中,而不是使用子文件夹。

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

我在发行说明中找不到任何关于它的信息。

【问题讨论】:

    标签: python django frameworks


    【解决方案1】:

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

    关于模板目录,来自docs:

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

    所以实际的目录是:

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

    这可以帮助您将所有内容保存在应用文件夹中,并且不需要您进行任何配置,

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

    myproj/foo/templates/foo/...
    myproj/foo/templates/bar/...
    myproj/foo/templates/baz/...
    

    【讨论】:

    • 那么附加的子文件夹有什么用呢?是这样我可以更容易地将模板剪切并粘贴到另一个地方吗?多次使用 appname 看起来很奇怪。
    • 它允许您覆盖/修改另一个应用程序的模板,即myproj/foo/templates/admin/base_site.html
    • 是不是很不整洁?我知道子文件夹在 projname/templates/appname/template.py 中很有用。但是在花药中覆盖一个应用程序的模板会使它们非常纠结。无论如何,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 2014-04-28
    • 1970-01-01
    • 2017-03-19
    • 2011-09-06
    • 1970-01-01
    • 2011-05-31
    相关资源
    最近更新 更多