38053


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を配信するベストプラクティスを知りたい。

## 環境

[code]

    Python 3.6.1
    
[/code]

[django-sass-processor](https://github.com/jrief/django-sass-processor)
を利用して、開発環境では以下の構成でうまく配信されている。開発環境かどうかは.zshrcで定義された環境変数によって(データベース設定に関してのみlocal_settings.pyとproduction_settings.pyを別に読み込むことで）区別し設定しているが、静的ファイルについては共通のsettings.pyで定義されている。

$tree

[code]

    ├── requirements.txt
    ├── runtime.txt
    └── static
        └── sass
            ├── bootstrap_override.css
            ├── bootstrap_override.css.map
            ├── navigation.css
            ├── navigation.css.map
    
[/code]

requirements.txt

[code]

    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
    
[/code]

settings.py

[code]

    STATIC_URL = '/static/'
    STATICFILES_DIRS = (
        os.path.join(BASE_DIR, 'static'),
    )
    STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
    
[/code]

ターミナルにて

`heroku run ./manage.py compilescss`

[code]

    .............................................................................................................................................................................................................................................................................
        Successfully compiled 5 referred SASS/SCSS files.
    
[/code]

$heroku run bash

にて、herokuの環境を覗くも~static/sass/以下にファイルは適切にコンパイルされており、開発環境と同じ構成。


CC BY-SA 3.0
2017-09-20T02:30:09.980
38052
2017-09-20T03:27:39.183
2017-09-20T02:35:53.643
17011
17011
question
python python3 django
DjangoにおけるSTATIC_ROOT,STATICFILES_DIRS, STATIC_URLの違いとは


自己解決しました。

## STATIC_ROOT

本番環境でのみ利用される。nginxで静的ファイルを配信したい場合など。`manage.py
collectstatic`によって静的ファイルがここにコピーされる。

## STATICFILES_DIRS

他のファイル（アプリケーションファイル配下じゃなくても可能）から静的ファイルを取得したいときに指定できる。前述のSTATIC_ROOTにコピーされる。

## STATIC_URL

<https://static.example.org/filename.ext>

における、`https://static.example.org` 部分のURL.


CC BY-SA 3.0
2017-09-20T03:27:39.183
38053
2017-09-20T03:27:39.183
17011
38052
answer