私は virtualenv を使用しています。たとえば、プロジェクト フォルダーのルートにテンプレート フォルダーを作成する場合など、 TEMPLATE_DIRS
inがどうあるべきかを知りたいです。settings.py
6 に答える
テンプレート フォルダーへの絶対パスを指定する必要があります。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/'),
)
新しいバージョンの 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',
],
},
},
]
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 を使用している場合は、PROJECT_DIR の代わりに BASE_DIR を使用することをお勧めします。
# add at the beginning of settings.py
import os
# ...
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, 'templates/'),
)
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,
...
},
]