開発

{{ STATIC_URL }}を読み込まない時の対応方法-Django 1.8.1


{{ STATIC_URL }}
のタグを読み込んでくれなくて、ずっと悩んでいましたが、
Upgrading templates to Django 1.8 | Django documentation | Django
を読んでいたところ、
'django.template.context_processors.static',
という記述を発見。

Django 1.8.1でプロジェクトを作成した時のデフォルトのSettings.pyは以下のようになっています。
TEMPLATES = [
  {
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [],
    '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',
        ],
    },
  },
]

ここに、
django.template.context_processors.static',
を追加。

TEMPLATES = [
  {
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [],
    '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',
        'django.template.context_processors.static', #追加した行
      ],
    },
  },
]

そしたら、{{ STATIC_URL }}を読み込んでくれるようになりました。

ちなみに、Django 1.4の時は、
静的ファイルの公開方法 — Django 1.4 documentation
'django.core.context_processors.static',
という表現で、さらに
TEMPLATE_CONTEXT_PROCESSORS
というのに記述します。

ここでずっとハマっていて、静的ファイルが読み込めなかったのですが、解決です。