使用virtualenv时,django settings.py中TEMPLATE_DIRS的路径是什么

时间:2012-08-14 16:06:32

标签: python virtualenv

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

6 个答案:

答案 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'),
)