Mi máquina local ejecuta Python 2.5 y Nginx en Ubuntu 8.10, con Django integrado desde el último tronco de desarrollo.
Por cada URL que solicito, arroja:
TemplateDoesNotExist en / appname / path appname / template_name.html
Django intentó cargar estas plantillas, en este orden: * Usando el cargador django.template.loaders.filesystem.function: * Usando el cargador django.template.loaders.app_directories.function:
TEMPLATE_DIRS ('/usr/lib/python2.5/site-packages/projectname/templates',)
¿Está buscando /usr/lib/python2.5/site-packages/projectname/templates/appname/template_name.html en este caso? Lo extraño es que este archivo existe en el disco. ¿Por qué Django no puede localizarlo?
Ejecuto la misma aplicación en un servidor remoto con Python 2.6 en Ubuntu 9.04 sin ese problema. Otras configuraciones son iguales.
¿Hay algo mal configurado en mi máquina local, o qué podría haber causado tales errores que debería investigar?
En mi settings.py , he especificado:
SETTINGS_PATH = os.path.normpath(os.path.dirname(__file__))
# Find templates in the same folder as settings.py.
TEMPLATE_DIRS = (
os.path.join(SETTINGS_PATH, 'templates'),
)
Debería estar buscando los siguientes archivos:
- /usr/lib/python2.5/site-packages/projectname/templates/appname1/template1.html
- /usr/lib/python2.5/site-packages/projectname/templates/appname1/template2.html
- /usr/lib/python2.5/site-packages/projectname/templates/appname2/template3.html
- ...
Todos los archivos anteriores existen en el disco.
Resuelto
Funciona ahora después de que lo intenté:
chown -R www-data:www-data /usr/lib/python2.5/site-packages/projectname/*
Es extraño. No necesito hacer esto en el servidor remoto para que funcione.

Respuestas:
Primera solución :
Estas configuraciones
significa que Django mirará las plantillas del
templates/directorio bajo su proyecto.Suponiendo que su proyecto Django se encuentre en
/usr/lib/python2.5/site-packages/projectname/su configuración, django buscará las plantillas en/usr/lib/python2.5/site-packages/projectname/templates/Entonces, en ese caso, queremos mover nuestras plantillas para estructurarlas así:
Segunda solución :
Si eso todavía no funciona y suponiendo que tiene las aplicaciones configuradas en settings.py de esta manera:
Por defecto, Django cargará las plantillas en el
templates/directorio debajo de cada aplicación instalada. Entonces, con su estructura de directorio, queremos mover nuestras plantillas para que sean así:SETTINGS_PATHpuede no estar definido por defecto. En cuyo caso, querrá definirlo (en settings.py):fuente
/usr/lib/python2.5/site-packages/projectname/?templatesno es un buen diseño. Pero, como sé, después de agregar suAPP_NAMEen elsettings.py,djangopodría ir a buscar la plantilla de la aplicación en el directorio que está debajo delAPP_DIR. Por lo tanto, puede separar la plantilla para varias aplicaciones. (Django 1.7 - .1.9Encuentra esta tupla:
Debe agregar a 'DIRS' la cadena
Así que en conjunto necesitas:
fuente
SETTINGS_PATHen realidad no está definido en ningún lado, por lo que no creo que esta respuesta funcione. Tal vez quisiste decirBASE_DIRSETTINGS_PATH = os.path.dirname(os.path.dirname(__file__)), no archivoSi encuentra este problema cuando agrega un
appdesde cero. Probablemente sea porque extrañas algosettings. Se necesitan tres pasos al agregar unapp.1 、 Cree el directorio y el archivo de plantilla.
Supongamos que tiene un proyecto con nombre
mysitey desea agregar unappnombreyour_app_name. Coloque su archivo de plantilla debajo de lamysite/your_app_name/templates/your_app_namesiguiente manera.2 、 Añade tu
appaINSTALLED_APPS.Modificar
settings.py3 、 Agregue su
appdirectorio aDIRSenTEMPLATES.Modificar
settings.py.fuente
En la configuración .py, elimine TEMPLATE_LOADERS y TEMPLATE DIRS y luego AGREGUE
fuente
Tuve un problema embarazoso ...
Recibí este error porque estaba apurado y olvidé poner la aplicación
INSTALLED_APPS. Se podría pensar que Django generaría un error más descriptivo.fuente
Solo una corazonada, pero mira este artículo sobre la carga de plantillas de Django . En particular, asegúrese de tenerlo
django.template.loaders.app_directories.Loaderen su lista TEMPLATE_LOADERS.fuente
Verifique los permisos en plantillas y directorios de nombres de aplicaciones, ya sea con ls -l o intente hacer una ruta absoluta open () desde django.
fuente
Funciona ahora después de que lo intenté
Es extraño. No necesito hacer esto en el servidor remoto para que funcione.
Además, tengo que ejecutar el siguiente comando en la máquina local para que todos los archivos estáticos sean accesibles, pero en el servidor remoto todos son "root: root".
La máquina local se ejecuta en la edición de escritorio Ubuntu 8.04. El servidor remoto está en la edición de servidor Ubuntu 9.04.
¿Alguien sabe por qué?
fuente
Para la versión 1.9 de django, agregué
línea al bloque de Plantillas en settings.py Y funcionó bien
fuente
El
TemplateDoesNotExisterror de Django significa simplemente que el marco no puede encontrar el archivo de plantilla.Para utilizar la API de carga de plantillas, deberá indicarle al marco dónde almacena sus plantillas. El lugar para hacerlo es en su archivo de configuración (
settings.py)TEMPLATE_DIRSconfigurando. Por defecto es una tupla vacía, por lo que esta configuración le dice al mecanismo de carga de plantillas de Django dónde buscar plantillas.Elija un directorio donde desee almacenar sus plantillas y agréguelo a TEMPLATE_DIRS, por ejemplo:
fuente
Vea qué carpeta django intenta cargar la plantilla mira
Template-loader postmortemen la página de error, por ejemplo, el error se ralentizará así:En mi error
vcsrc\vcsrc\templates\base.htmlno en la ruta.A continuación, cambiar
TEMPLATESdesetting.pyarchivo en su camino plantillasfuente
Debo usar plantillas para una aplicación interna y funciona para mí:
fuente
Asegúrese de que ha añadido a su aplicación a la
project-name/app-namme/settings.pyINSTALLED_APPS: .Y en
project-name/app-namme/settings.pyplantillas: .fuente
Verifique que sus templates.html estén en
/usr/lib/python2.5/site-packages/projectname/templatesdir.fuente
Hola chicos, encontré una nueva solución. En realidad, se define en otra plantilla, por lo que en lugar de definir TEMPLATE_DIRS usted mismo, coloque el nombre de la ruta del directorio en su:
fuente
Me da vergüenza admitir esto, pero el problema para mí fue que se había especificado una plantilla en
….hmllugar de….html. ¡Cuidado!fuente
Agregué esto
y todavía mostraba el error, luego me di cuenta de que en otro proyecto las plantillas se mostraban sin agregar ese código en el archivo settings.py, así que verifiqué ese proyecto y me di cuenta de que no creé un entorno virtual en este proyecto, así que lo hice
y funcionó, no sé por qué
fuente
Se me ocurrió este problema. Así es como resolví esto:
Mire su settings.py, ubique a
TEMPLATESvariable, dentro de las PLANTILLAS, agregue su ruta de plantillas dentro de laDIRSlista. Para mí, primero configuro mi ruta de plantillas comoTEMPLATES_PATH = os.path.join(BASE_DIR,'templates'), luego agregoTEMPLATES_PATHa laDIRSlista'DIRS':[TEMPLATES_PATH,],. Luego reinicie el servidor, la excepción TemplateDoesNotExist desaparece. Eso es.fuente
en su
setting.pyarchivo reemplazarDIRSenTEMPLATESmatriz con estoa esto
pero creo que lo que necesita saber es que debe hacer una carpeta con el nombre
templatesy debe hacerlo en la ruta raíz; de lo contrario, debe cambiar elDIRSvalorfuente
1.Cree una carpeta 'plantillas' en su 'aplicación' (digamos que ha llamado así a su aplicación) y puede colocar el archivo html aquí. Pero se recomienda crear una carpeta con el mismo nombre ('aplicación') en la carpeta 'plantillas' y solo luego colocar htmls allí. En la carpeta 'app / templates / app'
2.ahora en urls.py de 'aplicación' poner:
3. en 'views' de la aplicación 'put:
fuente