2012-08-14 51 views

回答

16

您需要指定模板文件夹的绝对路径。始终使用正斜杠,即使在Windows上也是如此。

例如,如果你的项目文件夹是 “/家/ djangouser /项目/ MyProject的”(Linux)或 'C:\项目\ MyProject的\'(Windows)中,你的TEMPLATE_DIRS是这样的:

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

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

或者,您可以使用指定的PROJECT_ROOT变量,并通过将其与模板文件夹的相对路径进行连接来生成绝对路径。这具有如下优点:如果将项目复制到其他位置,则只需更改PROJECT_ROOT。您需要导入os模块,使其工作:

# add at the beginning of settings.py 
import os 

# ... 

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

感谢您的回答。它的说法PROJECT_ROOT没有为第二个答案定义。 – weaveoftheride 2012-08-14 17:25:43

+0

我的项目文件夹位于/ Users/andrewwelch/Sites/env /,我想我必须改变这个,如果我把它放到远程服务器上 – weaveoftheride 2012-08-14 17:27:15

+0

是的,是我的错。我注意到PROJECT_ROOT不是一个标准变量,并且被我添加到settings.py中,我抬头看。它基本上像这里的建议一样:http://stackoverflow.com/questions/4919600/django-project-root-self-discovorey – eminor 2012-08-14 18:20:14

2

的PROJECT_DIR尚未确定...的PROJECT_DIR不是一个变量。其目录/文件夹“模板”所在的路径。这应该有帮助

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

如果您使用的是Django 1.9,建议使用BASE_DIR而不是PROJECT_DIR。

# add at the beginning of settings.py 
import os 

# ... 

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

如果你使用Django较新版本的工作,你可能需要将其添加到DIR列表里面settings.py下模板。

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

在web/settings.py中添加它解决了我的一切。希望它也能帮助你。

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

这与已发布的答案有什么不同?你所做的只是将'join'绑定为全局的,而不是使用完整的'os.path.join()'拼写。 – 2017-02-25 13:44:18

+0

当我使用已发布的答案。我可以得到一个错误,说没有找到BASE_DIR – ninyesiga 2017-02-27 07:43:15

+0

'BASE_DIR'只是一个名字(尽管它看起来像Django 1.9中的项目模板,并且现在定义了名称,请参阅https://github.com/django/django/blob /master/django/conf/project_template/project_name/settings.py-tpl)。 [使用virtualenv时,django settings.py中TEMPLATE \ _DIRS的路径是什么](// stackoverflow.com/a/24706023)使用名称'PROJECT_DIR'来确保相同的值。 – 2017-02-27 07:46:24

相关问题