我正在使用 virtualenv,我想知道TEMPLATE_DIRS
insettings.py
应该是什么,例如,如果我在项目文件夹的根目录中创建了一个模板文件夹。
6 回答
您需要指定模板文件夹的绝对路径。始终使用正斜杠,即使在 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/'),
)
如果您使用的是较新版本的 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',
],
},
},
]
PROJECT_DIR 尚未定义... PROJECT_DIR 不是变量。它是文件夹“模板”所在的目录/路径。这应该有帮助
import os
PROJECT_DIR = os.path.dirname(os.path.dirname(__file__))
TEMPLATE_DIRS = os.path.join(PROJECT_DIR, 'templates')
如果您使用的是 Django 1.9,建议使用 BASE_DIR 而不是 PROJECT_DIR。
# add at the beginning of settings.py
import os
# ...
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, 'templates/'),
)
TEMPLATE_DIRS deprecated 自 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,
...
},
]
在 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'),
)