2012-07-13 11 views
9

Duplicar posibles:
Django view - load template from calling app's dir firstDjango nombre de la plantilla conflicto

tengo proyecto de Django con un número de aplicaciones. En realidad la estructura de archivos es el siguiente:

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

que se espera que el directorio de plantilla de aplicación activa tiene prioridad más alta cuando la plantilla resolver. ¡Pero en realidad obtuve la primera plantilla según el orden de INSTALLED_APPS! Si cambio el orden de las aplicaciones instaladas, la plantilla se cambia de manera correspondiente.

Pregunta: ¿hay alguna manera de obtener primero la plantilla de la aplicación actual? ¿De la singularidad del nombre de la plantilla/especificación explícita del directorio es la única forma de lograrlo?

+1

Es posible que desee consultar http://stackoverflow.com/questions/3092865/django-view-load-template-from-calling-apps-dir-first – Rohan

+0

Gracias, eso es todo. –

Respuesta

10

La solución habitual es poner plantillas en otro subdirectorio, el nombre de la aplicación, tales como:

myproj/ 
    app1/ 
    templates/ 
     app1/ 
     index.html 

Esto se hace mediante las aplicaciones embarcadas (como django.contrib.admin) y funciona bastante bien. Usualmente uso nombres genéricos como index.html en la raíz de la plantilla para archivos específicos del proyecto (por ejemplo, el índice de todo el sitio).

+0

Esa es la manera de Django. Me olvidé de eso y borré mi respuesta ya que esta es la respuesta correcta en mi mente. – Jens

Cuestiones relacionadas