2013-04-04 4 views
0

Il m'a fallu une éternité pour découvrir pourquoi un template ne se remplaçait pas, seulement pour constater qu'il semble que Django n'utilise pas la priorité correcte en remplaçant les templates.Django mauvais préséance des modèles?

Les modèles que j'essaie de modifier sont ceux qui modifient le mot de passe de l'utilisateur, qui sont chargés pour l'URL /accounts/password/change. J'ai mes modèles modifiés dans mysite/myapp/templates/registration; les modèles par défaut du système sont à /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/contrib/admin/templates/registration. Lorsque des modèles sont présents dans ces deux répertoires, Django utilise les systèmes (/Library). Huh?

Lorsque je supprime les modèles dans /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/contrib/admin/templates/registration , les bons (c'est-à-dire le mien, dans mysite/myapp/templates/registration) sont chargés.

Comment réparer ce problème? C'est, comment faire Django charger mes modèles surchargés sans avoir la suppression des modèles originaux trouvés dans le /Library?

Répondre

1

vous devez créer un répertoire admin dans les modèles de répertoire dans lequel vous définissez les modèles que vous souhaitez remplacer

Pour remplacer une ou plusieurs d'entre eux, d'abord créer un répertoire d'administration dans les modèles de votre projet annuaire. Cela peut être n'importe lequel des répertoires que vous avez spécifiés dans TEMPLATE_DIRS.

Read the Django doc here

+0

hmm, cela a fonctionné, merci. Mais comment se fait-il que django le trouve même si ce n'est pas dans les répertoires de modèles si je supprime les modèles par défaut? – houbysoft

+0

Il doit utiliser une sorte de liste d'ordre de priorité: utiliser override OU vérifier par défaut OU vérifier local – Chakib