2009-01-15 6 views
8

J'aimerais remplacer la page administrative "Changer le mot de passe" de Django (change_password.html). En tant que tel, j'ai placé "/contrib/admin/templates/registration/password_change_form.html" dans le répertoire "/templates/admin/registration/password_change_form.html" de mon projet. Malheureusement, cela ne semble pas faire l'affaire.Comment remplacer la page de mot de passe de changement administratif de Django?

À ce stade, je suis perplexe. J'imagine que cela a quelque chose à voir avec le fichier /contrib/auth/urls.py de Django (qui dirige l'appel du mot de passe de l'administrateur à "django.contrib.auth.views.password_change"), mais les changements de modèle d'admin ont été triviaux jusqu'à présent et je suis surpris celui-ci ne suit pas.

Des pensées?

+0

Qu'est-ce que vos settings.TEMPLATE_DIRS ressemblent? – bchhun

+0

Il a "'./templates',". Je ne suis pas sûr que ce soit le problème. J'ai un répertoire "/ templates/admin" et ce n'est pas explicitement défini dans TEMPLATE_DIRS – Huuuze

Répondre

6

Un rapide coup d'oeil à la source indique que vous devez placer le modèle:

/templates/registration/password_change_form.html 

Nota bene: il n'y a pas 'admin /' là-dedans.

+0

Où avez-vous vu cela comme solution? J'ai dû l'ignorer. – Huuuze

+0

J'ai lu la source. Bien sûr, lors d'un second passage, je l'ai trouvé dans les docs de Djanog http://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.django.contrib.auth.views.password_change –

+0

Regardez la liste des paramètres de la fonction 'password_change' dans django/contrib/auth/views.py – ayaz

1

J'ai eu le même problème; Je crois qu'il doit faire comment fonctionnent les chargeurs de template django.

Si vous utilisez quelque chose comme

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

Avec quelque chose comme TEMPLATE_DIRS = ( os.path.join (PROJECT_DIR, 'templates'), )

alors vous attendre à ce que (où localstore est le nom de vos substitutions satchmo locales) localstore/templates/registration/password_change_form.html fonctionnerait. Cependant, ce n'est pas le cas pour password_change_form car l'administrateur l'écrase. Donc, il va quelque chose comme:

  1. modèle chargeur de fichier dirs (par exemple des modèles)
  2. (modèles django admin)
  3. modèle des applications locales dirs

Ainsi, la solution pour moi était de déplacer mon modèle d'enregistrement remplace de mon répertoire localstore/templates vers le répertoire/templates du projet.

19

Vous devez utiliser:

templates/registration/password_change_form.html 

Si vous voyez toujours le modèle d'administration de Django, vous devez changer l'ordre de votre INSTALLED_APPS (par exemple si votre modèle est à l'intérieur une application, cette application doit apparaître avant django.contrib.admin dans INSTALLED_APPS)

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

+3

ne sais pas pourquoi vous avez downvoted, c'est la réponse que je cherchais. Problème résolu! – TheBronx

+7

Le tipp ** cette application doit apparaître avant django.contrib.admin dans INSTALLED_APPS ** a été très utile! – Jarus

+2

Vieux si ce commentaire est, il est encore un épargnant de vie;) +1 pour mentionner l'importance de l'ordre – LisuBB

Questions connexes