9

我正在使用 virtualenv,我想知道TEMPLATE_DIRSinsettings.py应该是什么,例如,如果我在项目文件夹的根目录中创建了一个模板文件夹。

4

6 回答 6

18

您需要指定模板文件夹的绝对路径。始终使用正斜杠,即使在 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/'),
)
于 2012-08-14T17:03:00.640 回答
15

如果您使用的是较新版本的 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',
            ],
        },
    },
]
于 2016-10-20T04:22:13.870 回答
3

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

import os
PROJECT_DIR = os.path.dirname(os.path.dirname(__file__))
TEMPLATE_DIRS = os.path.join(PROJECT_DIR, 'templates')
于 2014-07-11T20:29:41.230 回答
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/'),
)
于 2016-09-30T06:22:47.463 回答
1

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,
        ...
    },
]
于 2021-07-17T07:10:44.983 回答
-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'),
)
于 2017-02-25T12:40:48.217 回答