DjangoにおけるSTATIC_ROOT,STATICFILES_DIRS, STATIC_URLの違いとは
Djangoを学び始めたものです。初歩的な質問ですみません。
settins.pyにて設定する
STATIC_ROOT,STATICFILES_DIRS, STATIC_URL
の違いがよくわかりません。
目的
herokuでscssファイルを適切に配信したい。開発環境ではうまくいくもののherokuでうまくいかない。
具体的には heroku_url.com/static/sass/theme.min.css net::ERR_ABORTED
とコンソールに表示され、cssが適用されない。
エラーが上記の設定にあると考えているため差異を理解したい。
Djangoでscssを配信するベストプラクティスを知りたい。
環境
Python 3.6.1
django-sass-processor を利用して、開発環境では以下の構成でうまく配信されている。開発環境かどうかは.zshrcで定義された環境変数によって(データベース設定に関してのみlocal_settings.pyとproduction_settings.pyを別に読み込むことで)区別し設定しているが、静的ファイルについては共通のsettings.pyで定義されている。
$tree
├── requirements.txt
├── runtime.txt
└── static
└── sass
├── bootstrap_override.css
├── bootstrap_override.css.map
├── navigation.css
├── navigation.css.map
requirements.txt
certifi==2017.7.27.1
chardet==3.0.4
click==6.7
dj-database-url==0.4.2
dj-static==0.0.6
Django==1.11.5
django-appconf==1.0.2
django-bootstrap-form==3.3
django-compressor==2.2
django-sass-processor==0.5.5
django-toolbelt==0.0.1
first==2.0.1
gunicorn==19.7.1
idna==2.6
libsass==0.13.2
mysqlclient==1.3.12
pew==0.1.26
pip-tools==1.9.0
pipenv==7.3.6
psycopg2==2.7.3.1
pythonz-bd==1.11.4
pytz==2017.2
rcssmin==1.0.6
requests==2.18.4
resumable-urlretrieve==0.1.5
rjsmin==1.0.12
semver==2.7.8
six==1.11.0
static3==0.7.0
urllib3==1.22
virtualenv==15.1.0
virtualenv-clone==0.2.6
whitenoise==3.3.0
settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
ターミナルにて
heroku run ./manage.py compilescss
.............................................................................................................................................................................................................................................................................
Successfully compiled 5 referred SASS/SCSS files.
$heroku run bash
にて、herokuの環境を覗くも~static/sass/以下にファイルは適切にコンパイルされており、開発環境と同じ構成。