Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Django 静的ファイルの扱いについて

Djangoの静的ファイルの扱いがいまいち理解出来てなっかたので
調べて自分なりにまとめました。
staticディレクトリの配置する場所が参考にするサイトによって
設計が違ったりするとわからなくなってしまう...
STATIC_ROOTSTATIC_URLSTATICFILES_DIRS
この3つの意味をちゃんと理解できればそんなに難しい話ではなかった...

STATIC_ROOTについて

settings.py
STATIC_ROOT = os.path.join(BASE_DIR,'static')

ローカルのサーバを動かしている段階では、Djangoが勝手に
各アプリディレクトリ直下のstaticディレクトリを自動で探してくれるため、
意識する必要はないみたいです。

しかし本番環境のWebサーバに静的ファイルを管理させる場合に設定が必要になります。
というのも本番環境のWebサーバにそれらの静的ファイルを管理させる場合、
それらのファイルを一箇所に集めることが必要になり、
どこに集めるのかを決めるのがこのSTATIC_ROOTの役割だそうです。

なので$ python manage.py collectstaticコマンドを打った際に、
各アプリの静的ファイルを集約する先を設定値として指定します。
こちらはデフォルトで記述がないため、自分で追記する必要があります。

STATIC_URLについて

settings.py
STATIC_URL = '/static/'

静的ファイルをどんなURLで公開するのかを決める設定値。
例:/static/とした場合、各静的ファイルはドメイン/static/????のような形で
アクセスできるようになります。

特にこだわりがなければ、デフォルトで記載されている/static/として問題ないみたいです。

STATICFILES_DIRSについて

settings.py
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)

ローカルのサーバを動かしている段階では、Djangoが勝手に
各アプリディレクトリ直下のstaticディレクトリを自動で探してくれますが、
もしそれ以外に静的ファイルディレクトリとして
認識してほしいディレクトリがあればSTATICFILES_DIRSで設定可能。
基本的には必要ないはず。

d_kvn
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away