我花了很长时间才发现为什么模板没有被覆盖,只是发现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
中的原始模板?
答案 0 :(得分:1)
您必须在模板目录中创建一个管理目录,您可以在其中设置要覆盖的模板
要覆盖其中一个或多个,首先在项目的templates目录中创建一个admin目录。这可以是您在TEMPLATE_DIRS中指定的任何目录。