| この記事の要点 |
|---|
|
settings.py
以下はプロジェクト共通のstaticディレクトリを使う例です。2026年10月にDjango 6.0.7 / Python 3.12でパスの検出とテンプレートのURL生成を確認しました。開発中の配信と本番の配信は分けて考えます。
settings.pyにて静的ファイルを読み込むURLと静的ファイルを格納するディレクトリを定義する。
以下の例ではURLはstatic始まり、ディレクトリはプロジェクト直下のstaticディレクトリを指定している。
|
STATIC_URL = '/static/' STATICFILES_DIRS = ( |
上のos.path.join例はimport osとBASE_DIRの定義が必要です。丸括弧の内側がリストなので、全体もリストであり、誤ったタプルではありません。以下はPath型のBASE_DIRを使う設定例です。既存のBASE_DIRは確認して利用し、プロジェクトの他の設定を消して丸ごと置き換えないでください。
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
STATIC_URL = "/static/"
STATICFILES_DIRS = [BASE_DIR / "static"]
# collectstaticの出力先。入力のstaticディレクトリとは分ける。
STATIC_ROOT = BASE_DIR / "staticfiles"INSTALLED_APPSにdjango.contrib.staticfilesがあることも確認します。STATICFILES_DIRSは収集元、STATIC_ROOTはcollectstaticの出力先であり、同じディレクトリにしません。STATIC_URLはブラウザのURLの接頭辞で、ディスク上のパスではありません。
静的ファイルの設置
以下の様にプロジェクト直下にstaticディレクトリを作成して更にその中にcssおよびjsディレクトリを作成する。
|
プロジェクト名/ プロジェクト名/ アプリケーション名/ static/ |
cssおよびjsディレクトリの中に適当なファイルを設置する。(今回はtest.css, test.jsとする)この例ではstatic/css/test.cssとstatic/js/test.jsを次の内容にします。
static/css/test.css
h1 { color: #173c66; }static/js/test.js
console.log('static test loaded');テンプレートの記述
テンプレート側では以下のように記述することで静的ファイルを読み込むことが出来る。
{% load static %}
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<link href="{% static 'css/test.css' %}" rel="stylesheet">
<script src="{% static 'js/test.js' %}" defer></script>
</head>
<body><h1>静的ファイルの読み込み確認</h1></body>
</html>
開発環境で確認する
テンプレートを既存のビューから表示し、見出しの色とブラウザのConsoleを確認します。DEBUG=Trueかつdjango.contrib.staticfilesを有効にした開発環境では、runserverが静的ファイルを配信します。次は対象プロジェクトの仮想環境を有効にし、manage.pyがある場所で実行する例です。
python manage.py findstatic css/test.css --verbosity 2
python manage.py findstatic js/test.js --verbosity 2
python manage.py runserverfindstaticで今回のstatic配下の実ファイルが見つかることを確認します。ブラウザのNetworkで/static/css/test.cssと/static/js/test.jsが200になり、HTMLではなくCSS・JavaScriptが返るかも確認してください。ファイルが見つからなければ、BASE_DIRの位置・ファイル名・STATICFILES_DIRS・staticfilesアプリを順に見ます。
本番では収集と配信を分ける
本番向けの設定でSTATIC_ROOTを指定し、正式なデプロイ手順の中で実行します。
python manage.py collectstatic --noinputこの処理は収集元からSTATIC_ROOTへファイルを集めます。STATIC_ROOTを指定しただけ、またはcollectstaticを実行しただけでは、Webサーバーの配信設定は完成しません。STATIC_URLに対応するURLから、収集先のファイルをWebサーバーや利用中の配信基盤が返すように設定してください。runserverは本番公開用ではありません。
混同しやすい点
- 画像アップロードなど利用者のファイルはMEDIA_ROOT / MEDIA_URL側の設計です。静的なCSS・JSの収集先に混ぜません。
- {% load static %}はそのタグを使うテンプレート内で必要です。読み込みとファイルの存在確認は別です。
- 同じ相対パスのファイルが複数ある場合はfindstaticの結果を見ます。アプリごとのファイルは名前空間付きディレクトリで衝突を避けます。
- 開発で動いて本番だけ404になる場合は、収集の実行結果・STATIC_ROOTの実ファイル・URLと配信先の対応を確認します。
今回の検証はCSS/JSの検出、テンプレートでのURL生成、収集元と出力先の分離です。本番のWebサーバー設定やcollectstaticの実行はこの記事の検証では行っていません。
公式資料: Django 6.0の静的ファイル管理(2026年10月確認)。
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- プロジェクトをTomcatプロジェクトとして認識させる方法 2026-10-07 22:32:50
- MySQLの1366 Incorrect string value|Laravelの文字コード・絵文字エラー 2026-10-07 21:54:03
- curlの証明書ホスト名不一致|旧エラー51・現行60の確認と対処 2026-10-07 21:54:03
- LaravelのMassAssignmentException|fillableの原因と安全な対処 2026-10-07 21:54:03
- Eclipse で Tomcat の起動ログがコンソールに出ない時の確認手順 2026-10-07 21:54:02
- MySQLにおける中央値(Median)の導き方(バージョン8未満) 2026-10-07 13:49:45
- getInputForward 2026-10-07 13:41:15
- JSONから配列に変換 2026-10-07 13:41:15
- ビューから値をモデルに格納しコントローラーで受け取る方法 2026-10-07 13:23:41
- Laravelのテーブル作成と定義変更|マイグレーション・up/down・注意点 2026-10-07 13:23:41
- NumPy 配列に要素を追加する方法 (append / concatenate) 2026-10-07 13:23:41
- MariaDB・MySQLで現在日時を取得する方法|NOW・タイムゾーン・保存型 2026-10-07 13:13:36
- 【django】テンプレートで定数を使用する方法 2026-10-07 13:10:15
- Spring BootにおけるApplication.propertiesの環境依存設定の分割方法 2026-10-07 12:09:35
- Not supported for DML operations【Springエラー】 2026-10-07 11:09:38