【发布时间】:2012-08-10 23:39:31
【问题描述】:
我正在使用 virtualenv,我想知道 settings.py 中的 TEMPLATE_DIRS 应该是什么,例如,如果我在项目文件夹的根目录中创建了一个模板文件夹。
【问题讨论】:
标签: python virtualenv
我正在使用 virtualenv,我想知道 settings.py 中的 TEMPLATE_DIRS 应该是什么,例如,如果我在项目文件夹的根目录中创建了一个模板文件夹。
【问题讨论】:
标签: python virtualenv
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,
...
},
]
【讨论】:
在 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'),
)
【讨论】:
join 绑定为全局而不是使用完整的os.path.join() 拼写。
BASE_DIR 只是一个名称(尽管它看起来像 Django 1.9 及更高版本中的项目模板现在定义名称,请参阅github.com/django/django/blob/master/django/conf/…)。 What is the path for TEMPLATE_DIRS in django settings.py when using virtualenv 使用名称 PROJECT_DIR 来表示完全相同的值。
如果您使用的是较新版本的 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',
],
},
},
]
【讨论】:
'DIRS': ['[project name]/templates'], # Replace with your project name 不带括号的项目名称:'project name/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/'),
)
【讨论】:
PROJECT_DIR 尚未定义... PROJECT_DIR 不是变量。它是文件夹“模板”所在的目录/路径。这应该会有所帮助
import os
PROJECT_DIR = os.path.dirname(os.path.dirname(__file__))
TEMPLATE_DIRS = os.path.join(PROJECT_DIR, 'templates')
【讨论】:
TEMPLATE_DIRS 设置必须是列表或元组。
您需要指定模板文件夹的绝对路径。始终使用正斜杠,即使在 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/'),
)
【讨论】: