Каков путь для шаблонов 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'),
)