0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Django】静的ファイルの考え方について

Posted at

Djangoの静的ファイル設定について (STATIC_URL, STATICFILES_DIRS, STATIC_ROOT)

Django における STATIC_URL, STATICFILES_DIRS, STATIC_ROOT の役割がよく分からなかったため、内容をまとめます。

1. STATIC_URL

STATIC_URL は、静的ファイルへの URLパスのプレフィックス を指定します。

目的

  • ブラウザが静的ファイル(CSS, JS, 画像など)を取得するためのURLを定義します。
  • 必ずURL形式で指定します(例: /static/)。

設定例

STATIC_URL = '/static/'

2. STATICFILES_DIRS

目的

  • STATICFILES_DIRS は、開発環境で Django が静的ファイルを探すディレクトリを指定するものです。

  • 開発サーバーが静的ファイルを提供する際、どのディレクトリからファイルを探すか指定します。
    複数のディレクトリをリスト形式で指定できます。

設定例

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),       # プロジェクト全体の静的ファイル
    os.path.join(BASE_DIR, 'application/static'),  # アプリ固有の静的ファイル
]

ディレクトリ構造の例

project/
├── static/
│   ├── css/
│   │   ├── style.css
│   ├── js/
│   │   ├── script.js
├── application/
│   ├── static/
│   │   ├── images/
│   │   │   ├── logo.png

3. STATIC_ROOT

目的

STATIC_ROOT は、本番環境で collectstatic コマンドによって、すべての静的ファイルが収集されるディレクトリを指定します。

  • 本番環境で Nginx や Apache などの Web サーバーが、静的ファイルを1箇所にまとめて提供するために使用します。

設定例

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')

ディレクトリ構造(collectstatic 実行後)

project/
├── staticfiles/
│   ├── css/
│   │   ├── style.css
│   ├── js/
│   │   ├── script.js
│   ├── images/
│   │   ├── logo.png

Nginx 設定例

location /static/ {
    root /path/to/project/staticfiles;
}

動作の流れ

1. 開発環境

  • Django の開発サーバー(python manage.py runserver)は、STATICFILES_DIRS に指定されたディレクトリから直接静的ファイルを提供します。

2. 本番環境

  • collectstatic を実行すると、すべての静的ファイルが STATIC_ROOT にまとめられます。
  • Web サーバー(Nginx や Apache)が STATIC_ROOT にあるファイルを提供します。
    本番環境では Django 自体が静的ファイルを提供しません。

まとめ

  • 開発環境ではSTATICFILES_DIRS を使って静的ファイルを直接提供する。

  • 本番環境ではcollectstaticを用いて静的ファイルを集め、STATIC_ROOT を使用して静的ファイルを間接的に提供する。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?