2012-08-14 25 views

Respuesta

16

Debe especificar la ruta absoluta a la carpeta de la plantilla. Utilice siempre barras diagonales, incluso en Windows.

Por ejemplo, si la carpeta del proyecto es "/ home/djangouser/proyectos/miproyecto" (Linux) o 'C: \ projects \ miproyecto \' (Windows), sus TEMPLATE_DIRS se ve así:

# for Linux 
    TEMPLATE_DIRS = (
     '/home/djangouser/projects/myproject/templates/', 
    ) 

    # or for Windows; use forward slashes! 
    TEMPLATE_DIRS = (
     'C:/projects/myproject/templates/', 
    ) 

Alternativamente, puede usar la variable PROJECT_ROOT especificada y generar la ruta absoluta al unirla con la ruta relativa a la carpeta de la plantilla. Esto tiene la ventaja de que solo necesita cambiar su PROJECT_ROOT, si copia el proyecto en una ubicación diferente. Es necesario importar el módulo os para que funcione:

# add at the beginning of settings.py 
import os 

# ... 

TEMPLATE_DIRS = (
    os.path.join(PROJECT_ROOT, 'templates/'), 
) 
+0

gracias por la respuesta. Se dice que PROJECT_ROOT no está definido para la segunda respuesta. – weaveoftheride

+0

mi carpeta de proyecto está en/Users/andrewwelch/Sites/env/y supongo que tendría que cambiar esto si lo pongo en un servidor remoto – weaveoftheride

+0

Sí, es mi culpa. Noté que PROJECT_ROOT no es una variable estándar y lo agregué a la configuración.py Miré hacia arriba. Es básicamente lo mismo que las sugerencias aquí: http://stackoverflow.com/questions/4919600/django-project-root-self-discovorey – eminor

2

la project_dir no se ha definido la project_dir ... no es una variable. es un directorio/una ruta hacia donde se encuentra la carpeta "plantillas". Esto debería ayudar a

import os 
PROJECT_DIR = os.path.dirname(os.path.dirname(__file__)) 
TEMPLATE_DIRS = os.path.join(PROJECT_DIR, 'templates') 
1

Si está utilizando Django 1.9, se recomienda utilizar BASE_DIR en lugar de project_dir.

# add at the beginning of settings.py 
import os 

# ... 

TEMPLATE_DIRS = (
    os.path.join(BASE_DIR, 'templates/'), 
) 
9

Si está trabajando con una nueva versión de Django puede que tenga que añadirlo a la lista de DIR que está dentro settings.py en plantillas.

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': ['[project name]/templates'], # Replace with your project name 
     'APP_DIRS': True, 
     'OPTIONS': { 
      'context_processors': [ 
       'django.template.context_processors.debug', 
       'django.template.context_processors.request', 
       'django.contrib.auth.context_processors.auth', 
       'django.contrib.messages.context_processors.messages', 
      ], 
     }, 
    }, 
] 
-1

Agregando esto en web/settings.py resuelto todo para mí. Espero que pueda ayudarte también.

import os 
BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 
from os.path import join 
TEMPLATE_DIRS = (
    join(BASE_DIR, 'templates'), 
) 
+1

¿Cómo es esto diferente de las respuestas ya publicadas? Todo lo que hizo fue unir 'join' como global en lugar de usar la ortografía completa' os.path.join() '. –

+0

cuando utilicé las respuestas ya publicadas. podría obtener un error diciendo que no se encuentra BASE_DIR – ninyesiga

+0

'BASE_DIR' es solo un nombre (aunque parece que la plantilla del proyecto en Django 1.9 y posteriores definen el nombre ahora, consulte https://github.com/django/django/blob /master/django/conf/project_template/project_name/settings.py-tpl). [¿Cuál es la ruta de TEMPLATE \ _DIRS en django settings.py cuando se usa virtualenv] (// stackoverflow.com/a/24706023) utilizó el nombre 'PROJECT_DIR' para el mismo valor exacto sin embargo. –

Cuestiones relacionadas