STATIC_ROOT、staticの設定について|Django

static files settingsDjango

(最終更新月:2022年1月)

✔このような方へ向けて書かれた記事となります

「DjangoでSTATICを設定する方法が知りたい!」

「そもそもSTATIC_ROOT、STATICFILES_DIRSとかってどんな役割?」

「初心者だし、実例もあると助かるんだけど、、、」

✔当記事を通じてお伝えすること

  • 【Django】STATIC_ROOTの設定について
  • STATICFILES_DIRS、STATIC_URLとの違いは?
  • ローカル環境、本番環境別に実際のコード例を紹介

【著者プロフィール】

profile_icon
【Python歴】11年 x 【Django歴】10年
HP作成、社内システムの構築、コンサルティング

当ブログを通じて、Webアプリの書き方やアプリの公開方法までを解説しています。

☆日報アプリ「D-Repo」(デモ版)→こちら

※Djangoをベースに作成したアプリです。

☆便利ツールアプリ「Tool Station」→こちら

※Django REST frameworkとReactで作成しているアプリです。

STATIC_ROOTの設定について

STATIC_ROOTは、ローカル環境での設定は特に不要です。

STATIC_ROOTを設定する必要があるのは、CSSファイルを一箇所に集めたい時です。

これは、Apache等を搭載したWebサーバー上でCSSを読み込みたい時などが主な場面になります。

つまり、デプロイ時にのみ「STATIC_ROOT」を設定すればOKです。

例としては、

STATIC_ROOT = BASE_DIR / "static"

とした場合、下記のコマンド時に全てのCSSファイルが指定したフォルダ「static」に集まります。

$ python manage.py collectstatic

STATICFILES_DIRS、STATIC_URLとの違いは?

それでは、settings.pyにある「STATICFILES_DIRS」と「STATIC_URL」との違い、それぞれの役割は何なのでしょうか?

それぞれの役割を見ていきます。

STATICFILES_DIRS

STATICFILES_DIRSは、

  • ローカル環境で{% static %}タグを使った際に見に行く先のフォルダ
  • collectstaticを実行した際に見に行くフォルダ

です。

つまり、settings.py内で、

STATICFILES_DIRS = [
    BASE_DIR / 'static_local',
]

と指定した場合にstaticタグを使うと、「static_local」内に対象のファイルを探しに行くということになります。

ここでの設定が正しくされていないと、読み込みがされず、エラーとなります。

エラー解決の記事はこちら→☆【Django(エラー処理)】static cssファイルが読み込めない☆

STATIC_URL

STATIC_URLは、

ブラウザ上でアクセスするためのURLパス

を示しています。

つまり、STATICFILES_DIRSでどんなフォルダが指定されていようと、STATIC_URLが”/static/”の場合は、ブラウザから

localhost:8000/static/<cssファイル名>/

などとすることで、CSSファイルを見ることが可能です

ローカル環境、本番環境別に実際のコード例を紹介

実際にsettings.pyでは下記のように環境別にSTATICの設定をしています。

参考になれば幸いです。

【ローカル環境の場合】

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    BASE_DIR / 'static_local',
]

【本番環境の場合】

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    BASE_DIR / 'static_local',
]

STATIC_ROOT = "<実際に保存したいフォルダの絶対パス>/static" #「/var/www/html/static/」など。

まとめ

当記事の内容をまとめます。

  • STATIC_ROOTは読み込んだファイルをまとめて出力する先
  • STATICFILES_DIRSはCSSファイル等を読み込む先
  • STATIC_URLはブラウザからアクセスするための相対URL

となります!

一部はプロジェクト開始時から設定されているものもあり、本番環境になり混乱することが過去にありました。

お困りの方の参考になっていれば幸いです。

✔ウェブアプリを公開したい方へのおすすめ記事

【保存版】Apache WebサーバーでDjangoアプリを公開
Djangoが公開できる月500円~のレンタルサーバー
【初心者向け】ムームードメインで独自ドメインを取得する3ステップ
【実体験】マイIPの使い方を解説|固定IPアドレスを取得・設定する

✔当ブログは以下のような方に向けて書かれています

「Djangoでのアプリ開発を学びたい!」

「Djangoで開発したアプリをWebで公開するにはどうするの?」

✔当ブログ掲載の記事

  • Djangoで作る日報アプリ開発
  • WebアプリをWeb上に公開する方法
  • Webアプリ開発に必要なそのほかの情報
【Django】チュートリアル|日報アプリの開発から公開まで
Djangoのチュートリアルをお探しですか?具体的に「手を動かして作ってみたい!」という方へ向けて、誰でもできる簡易的な日報アプリの開発を通じて、Djangoの様々な機能に触れていくシリーズとなっています。PythonでWebアプリを作りたい方、必見の記事となります!

ITCブログにご協力いただける方は、以下もご検討いただけると嬉しいです。

ITCへ投げ銭をする

タイトルとURLをコピーしました