9

我想覆盖 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”),但管理模板更改是微不足道的到目前为止,我很惊讶这个没有效仿。

有什么想法吗?

4

3 回答 3

23

您必须使用:

templates/registration/password_change_form.html

如果您仍然看到 Django 的 Admin 模板,则必须更改您的顺序INSTALLED_APPS(例如,如果您的模板在某个应用程序中,则此应用程序必须出现在django.contrib.admin之前INSTALLED_APPS

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

于 2012-09-13T15:08:34.040 回答
10

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

/templates/registration/password_change_form.html

注意:那里没有“管理员/”。

于 2009-01-15T16:46:58.647 回答
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 管理模板)
  3. 本地应用模板目录

因此,我的解决方案是将我的注册模板覆盖从我的 localstore/templates 目录移动到项目的 /templates 目录。

于 2010-12-01T05:36:02.790 回答