Djangoで静的ファイルを扱う(開発環境)

静的ファイルって?

css とか javascript とか image です。
こんな風にディレクトリを掘ります

atasatamatara@dev:~/skz2_proj$ tree
.
|-- README
|-- __init__.py
|-- config.py
|-- data_skz.db
|-- manage.py
|-- settings.py
|-- skz2
|   |-- __init__.py
|   |-- admin.py
|   |-- context_processors.py
|   |-- models.py
|   |-- templatetags
|   |   |-- __init__.py
|   |   |-- cust_filter.py
|   |-- tests.py
|   |-- tools.py
|   |-- urls.py
|   |-- views.py
|-- static
|   |-- css
|   |   `-- base.css
|   `-- js
|       `-- base.js
|-- templates
|   |-- base.html
|   |-- index.html
|   `-- skz2.html
|-- urls.py

1.3からなんかMEDIA と STATIC と増えた

あんまりよくわかってないけど、下記の通りにやったら静的なファイルを扱えた。

settings.py

#別にSTATIC_ROOTになにかかくわけじゃない
STATIC_ROOT = ''
#これでプロジェクトのルートをとってくる
import os
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
#STATICFILES_DIRS に書きましょう
STATICFILES_DIRS = (
    os.path.join(BASEDIR, 'static'),
)
#CONTEXT_PROCESSORSにも追記しましょう

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'django.core.context_processors.csrf',
    'skz2.context_processors.display_user',
    'django.core.context_processors.media',
    #ここ!
    'django.core.context_processors.static',
    'django.contrib.messages.context_processors.messages',
    'django.core.context_processors.debug',
    'django.core.context_processors.i18n',
    'django.core.context_processors.request'
)

プロジェクトのurls.py

from django.conf import settings

...(略)...
#一応開発用の時ということにする
if setting.DEBUG:
    (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root' : settings.STATIC_ROOT})

これだけでした

知れば簡単。知らないとハマる。また、それだけのこと。

ちなみに

もうすぐDjango 1.4らしいですね

広告を非表示にする