【问题标题】:Django wrong precedence of templates?Django错误的模板优先级?
【发布时间】:2013-04-04 00:11:09
【问题描述】:

我花了很长时间才弄清楚为什么模板没有被覆盖,结果发现 Django 似乎根本没有使用正确的优先级来覆盖模板。

我要更改的模板是用于更改用户密码的模板,这些模板是为 URL /accounts/password/change 加载的。

我在mysite/myapp/templates/registration 中有我修改过的模板;系统默认模板位于/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/contrib/admin/templates/registration。当这两个目录中都存在模板时,Django 使用系统 (/Library) 模板。嗯?

当我删除/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/contrib/admin/templates/registration 中的模板时,会加载正确的模板(即我在mysite/myapp/templates/registration 中的模板)。

如何解决这个问题?也就是说,如何让Django加载我覆盖的模板而不删除/Library中找到的原始模板?

【问题讨论】:

    标签: python django templates


    【解决方案1】:

    您必须在模板目录中创建一个管理目录,在其中设置要覆盖的模板

    为了覆盖其中的一个或多个,首先在项目的模板目录中创建一个管理目录。这可以是您在 TEMPLATE_DIRS 中指定的任何目录。

    Read the Django doc here

    【讨论】:

    • 嗯,这行得通,谢谢。但是,如果我删除默认模板,即使它不在模板目录中,为什么 django 仍然可以找到它?
    • 它必须使用某种优先顺序列表:使用覆盖或检查默认值或检查本地
    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 2011-05-13
    • 2017-04-14
    • 2021-01-01
    • 1970-01-01
    相关资源
    最近更新 更多