如何覆盖Django的管理更改密码页面?

时间:2009-01-15 16:39:01

标签: django django-admin

我想覆盖Django的管理“更改密码”页面(change_password.html)。因此,我在项目的“/templates/admin/registration/password_change_form.html”目录中放置了Django的“/contrib/admin/templates/registration/password_change_form.html”。不幸的是,这似乎没有成功。

此时,我很难过。我猜它与Django的/contrib/auth/urls.py文件有关(它将管理员更改密码调用指向“django.contrib.auth.views.password_change”),但是管理模板更改很简单到目前为止,我很惊讶这一点并没有效仿。

有什么想法吗?

3 个答案:

答案 0 :(得分:21)

您必须使用:

templates/registration/password_change_form.html

如果您仍然看到Django的管理模板,则必须更改INSTALLED_APPS的顺序(例如,如果您的模板位于某个应用内,则该应用必须出现在{{1}之前在django.contrib.admin

https://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.views.password_change

答案 1 :(得分:9)

快速查看来源表明您应该将模板放在:

/templates/registration/password_change_form.html

注意bene:那里没有'admin /'。

答案 2 :(得分:1)

我有同样的问题;我相信它必须做django模板加载器的工作方式。

如果您使用的是

TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)

有类似的东西    TEMPLATE_DIRS =(     os.path.join(PROJECT_DIR,'templates'),    )

然后你会期望(localstore是本地satchmo覆盖的名称)localstore / templates / registration / password_change_form.html可以工作。但是,它不适用于password_change_form,因为管理员正在覆盖它。所以,它类似于:

  1. 文件加载器模板目录(例如模板)
  2. (django admin templates)
  3. 本地应用模板目录
  4. 所以,我的解决方案是将我的注册模板覆盖从我的localstore / templates目录移动到项目的/ templates目录。