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/以下にファイルは適切にコンパイルされており、開発環境と同じ構成。