我想覆盖 Django 的管理“更改密码”页面 (
change_password.html
)。 因此,我将 Django 的 /contrib/admin/templates/registration/password_change_form.html
放在项目的 /templates/admin/registration/password_change_form.html
目录中。 不幸的是,这似乎并不能解决问题。
此时,我陷入了困境。 我猜它与 Django 的
/contrib/auth/urls.py
文件有关(它将管理员更改密码调用定向到 django.contrib.auth.views.password_change
),但到目前为止,管理模板更改微不足道,我很惊讶这个文件没有遵循套装。
有什么想法吗?
您必须使用:
templates/registration/password_change_form.html
如果您仍然看到 Django 的管理模板,则必须更改
INSTALLED_APPS
的顺序(例如,如果您的模板位于某个应用程序内,则该应用程序必须出现在 django.contrib.admin
中的 INSTALLED_APPS
之前)
https://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.views.password_change
快速查看源代码表明您应该将模板放置在:
/templates/registration/password_change_form.html
注意:那里没有“admin/”。
我也遇到了同样的问题;我相信它必须完成 django 模板加载器的工作方式。
如果您正在使用类似的东西
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)
用类似的东西 模板目录 = ( os.path.join(PROJECT_DIR, '模板'), )
然后您会期望(其中 localstore 是本地 satchmo 覆盖的名称)localstore/templates/registration/password_change_form.html 可以工作。但是,它不适用于password_change_form,因为管理员正在覆盖它。所以,它是这样的:
因此,我的解决方案是将我的注册模板覆盖从 localstore/templates 目录移动到项目的 /templates 目录。