Как мне переопределить страницу административного изменения пароля Django?

Я хотел бы переопределить административную страницу 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"), но изменения шаблона администратора были тривиальными пока, и я удивлен, что этот не следует их примеру.

Есть предположения?

Как выглядит ваш файл settings.TEMPLATE_DIRS?

bchhun 15.01.2009 19:42

Он имеет "'./templates',". Не уверен, что проблема в этом. У меня есть каталог "/ templates / admin", который явно не определен в TEMPLATE_DIRS

Huuuze 15.01.2009 19:48
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
9
2
8 401
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Беглый взгляд на источник показывает, что вы должны поместить шаблон в:

/templates/registration/password_change_form.html

Примечание: там нет «admin /».

Где вы видели в этом решение? Я, должно быть, не заметил этого.

Huuuze 15.01.2009 19:51

Я читаю источник. Конечно, на втором проходе я обнаружил в документации Djanog docs.djangoproject.com/en/dev/topics/auth/…

Peter Rowell 15.01.2009 19:56

Посмотрите список параметров функции password_change в django / contrib / auth / views.py

ayaz 15.01.2009 19:58

Не нужно смотреть ни на что из этого, просто посмотрите на сами пути. Нет "admin /" после "templates /" в исходном местоположении файла, зачем вам добавлять его и ожидать, что он будет работать?

Carl Meyer 16.01.2009 00:17

Это неверно. Встроенный contrib.admin имеет шаблон в этом точном месте, который переопределит любой шаблон с таким же именем в вашем пользовательском проекте / приложении.

Cerin 02.05.2013 18:52

У меня такая же проблема; Я считаю, что это связано с тем, как работают загрузчики шаблонов 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, потому что администратор перезаписывает его. Итак, это выглядит примерно так:

  1. Каталоги шаблонов загрузчика файлов (например, шаблоны)
  2. (шаблоны администратора django)
  3. Каталоги шаблонов локальных приложений

Итак, решение для меня заключалось в том, чтобы переместить мои переопределения шаблона регистрации из моего каталога 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

Не знаю, почему вас проголосовали против, это ответ, который я искал. Задача решена!

Salvatorelab 25.05.2013 00:01

Совет это приложение должно появиться перед django.contrib.admin в INSTALLED_APPS был очень полезен!

Jarus 05.06.2013 13:06

Этот комментарий хоть и старый, но все же спаситель;) +1 за упоминание важности порядка

MateuszPrzybyla 31.05.2014 15:21

Другие вопросы по теме