2012-07-13 2 views
9

Possible en double:
Django view - load template from calling app's dir firstDjango nom du modèle conflit

J'ai projet Django avec un certain nombre d'applications. En fait, la structure de fichier est le suivant:

myproj/ 
    default/ 
    templates/ 
     index.html (1) 
    app1/ 
    templates/ 
     index.html (2) 
    app2/ 
    templates/ 
     index.html (3) 

j'attendre à ce que le répertoire du modèle de l'application active a la priorité lorsque la résolution de modèle. Mais en fait, j'ai obtenu le premier modèle en fonction de la commande INSTALLED_APPS! Si je change l'ordre des applications installées, le modèle est modifié en conséquence. Question: est-il possible d'obtenir d'abord le modèle de l'application actuelle? De l'unicité de la spécification de nom de modèle/répertoire explicite est le seul moyen de l'atteindre?

+1

Vous pouvez regarder http://stackoverflow.com/questions/3092865/django-view-load-template-from-calling-apps-dir-first – Rohan

+0

Merci, c'est ça. –

Répondre

10

La solution habituelle est de mettre des modèles dans un autre sous-répertoire, du nom de votre application, tels que:

myproj/ 
    app1/ 
    templates/ 
     app1/ 
     index.html 

Cela se fait par les applications livrées (comme django.contrib.admin) et fonctionne très bien. J'utilise généralement des noms génériques comme index.html dans la racine du modèle pour les fichiers spécifiques au projet (par exemple l'index du site entier).

+0

C'est la façon Django. J'ai oublié à ce sujet et supprimé ma réponse puisque c'est la bonne réponse dans mon esprit. – Jens