Каков путь для шаблонов DIRS в django settings.py при использовании virtualenv

Я использую virtualenv и я хочу знать, что TEMPLATE_DIRS на settings.py должно быть, например, если я сделаю папку "templates" в корне папке проекта.

5 ответов


нужно указать абсолютный путь к папке шаблона. Всегда используйте косые черты, даже в 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, если вы копируете проект в другое место. Вам нужно импортировать модуль ОС, чтобы он работал:

# add at the beginning of settings.py
import os

# ...

TEMPLATE_DIRS = (
    os.path.join(PROJECT_ROOT, 'templates/'),
)

Если вы работаете с более новой версией Django, вам может потребоваться добавить ее в список DIR, который находится внутри settings.py под шаблонами.

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/'),
)

добавление этого в 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'),
)