Я хотел бы переопределить административную страницу Django «Изменить пароль» (change_password.html). Поэтому я поместил Django "/contrib/admin/templates/registration/password_change_form.html" в каталог "/templates/admin/registration/password_change_form.html" моего проекта. К сожалению, это не помогает.
На данный момент я в тупике. Я предполагаю, что это как-то связано с файлом /contrib/auth/urls.py Django (который направляет вызов изменения пароля администратора на "django.contrib.auth.views.password_change"), но изменения шаблона администратора были тривиальными пока, и я удивлен, что этот не следует их примеру.
Есть предположения?
Он имеет "'./templates',". Не уверен, что проблема в этом. У меня есть каталог "/ templates / admin", который явно не определен в TEMPLATE_DIRS





Беглый взгляд на источник показывает, что вы должны поместить шаблон в:
/templates/registration/password_change_form.html
Примечание: там нет «admin /».
Где вы видели в этом решение? Я, должно быть, не заметил этого.
Я читаю источник. Конечно, на втором проходе я обнаружил в документации Djanog docs.djangoproject.com/en/dev/topics/auth/…
Посмотрите список параметров функции password_change в django / contrib / auth / views.py
Не нужно смотреть ни на что из этого, просто посмотрите на сами пути. Нет "admin /" после "templates /" в исходном местоположении файла, зачем вам добавлять его и ожидать, что он будет работать?
Это неверно. Встроенный contrib.admin имеет шаблон в этом точном месте, который переопределит любой шаблон с таким же именем в вашем пользовательском проекте / приложении.
У меня такая же проблема; Я считаю, что это связано с тем, как работают загрузчики шаблонов django.
Если вы используете что-то вроде
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)
Что-то вроде TEMPLATE_DIRS = ( os.path.join (КАТАЛОГ_ПРОЕКТА, 'шаблоны'), )
Тогда вы ожидаете, что (где localstore - это имя вашего локального переопределения satchmo) будет работать localstore / templates / registration / password_change_form.html. Однако это не относится к password_change_form, потому что администратор перезаписывает его. Итак, это выглядит примерно так:
Итак, решение для меня заключалось в том, чтобы переместить мои переопределения шаблона регистрации из моего каталога localstore / templates в каталог / templates проекта.
Вы должны использовать:
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
Не знаю, почему вас проголосовали против, это ответ, который я искал. Задача решена!
Совет это приложение должно появиться перед django.contrib.admin в INSTALLED_APPS был очень полезен!
Этот комментарий хоть и старый, но все же спаситель;) +1 за упоминание важности порядка
Как выглядит ваш файл settings.TEMPLATE_DIRS?