我正在使用virtualenv,我想知道TEMPLATE_DIRS
中的settings.py
应该是什么,例如,如果我在项目文件夹的根目录中创建模板文件夹。
答案 0 :(得分:17)
您需要指定模板文件夹的绝对路径。始终使用正斜杠,即使在Windows上也是如此。
例如,如果项目文件夹是“/ home / djangouser / projects / myproject”(Linux)或“C:\ projects \ 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/'),
)
答案 1 :(得分:11)
如果您正在使用较新版本的Django,则可能需要将其添加到TEMPLATES下的settings.py内的DIR列表中。
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',
],
},
},
]
答案 2 :(得分:2)
PROJECT_DIR尚未定义...... PROJECT_DIR不是变量。它的目录/文件夹" templates"位于。这应该有帮助
import os
PROJECT_DIR = os.path.dirname(os.path.dirname(__file__))
TEMPLATE_DIRS = os.path.join(PROJECT_DIR, 'templates')
答案 3 :(得分: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/'),
)
答案 4 :(得分:0)
TEMPLATE_DIRS 已弃用 此设置自 Django 1.8 版起已弃用。
deprecated
""" settings.py """
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, 'templates/'),
)
correct
""" settings.py """
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [ os.path.join(BASE_DIR, 'templates') ],
'APP_DIRS': True,
...
},
]
答案 5 :(得分:-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'),
)