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で作成しているアプリです。

✔月9,800円でWebデザインが学べる

デザナルは、Webデザインに苦手意識がある方におすすめのサブスク型スクールです。

特徴は以下の通り。

  • 初期費用不要
  • 教材が使い放題
  • 案件で収入も得られる

デザナルは稼ぎながら学べる、格安のWebデザインスクールです。

>>詳細はこちら<<

安いWebデザインスクール「デザナル」を徹底分析

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

となります!

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

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

当記事をご覧の方の中にも「そろそろウェブでアプリを公開してみたいなぁ」「どうやって公開するの?」という方もいらっしゃるのではないでしょうか?
下記の通り、別記事ではDjangoアプリの公開方法公開までの準備についての解説をしていますのでご覧ください!

「Webアプリを公開したい!」という方へ

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

当ブログでは、日報アプリ開発を通じて、Webアプリを一から開発し公開するまでを初学者の方でもわかるようにと記事を連載しています

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

という方は必見です!

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

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