🐍

【Python】Djangoで画像や動画のフォルダはどのディレクトリに保存するのか

2024/11/21に公開

開発環境:

項目 バージョン
windows 11
Vscode 1.87.2
Docker 26.1.1
Docker-compose 2.27.0
python 3.11.10
Django 5.0.1
Psql 16.5

達成目標

  • Djangoで画像や動画のフォルダはどのディレクトリに保存するのか理解し、実装することができる。

前提

  • アプリケーションのトップページが表示されている状態かつデータベースの設定が完了している状態から解説をしていく。

開発環境の構築がまだの方はこちらから↓

https://zenn.dev/code_journey_ys/articles/ddd8ba305a2538

データベースの設定がまたの方はこちらから↓

https://zenn.dev/code_journey_ys/articles/50df0fe110baac

メディアフォルダをどこに配置するのか

プロジェクトフォルダ配下に配置する
プロジェクトルート/
│
├── manage.py
├── myproject/            # プロジェクトのメインフォルダ
├── media/                # メディアファイルの保存先 (アップロードファイル)
│   ├── thumbnails/       # 画像用サブフォルダ
│   └── videos/           # 動画用サブフォルダ
├── static/               # 静的ファイル (CSS, JavaScript)
├── templates/            # テンプレートファイル
└── ...

1.メディアフォルダを作成する

プロジェクトフォルダ配下に画像用フォルダを作成する
mkdir media/thumbnails
プロジェクトフォルダ配下に動画用フォルダを作成する
mkdir media/videos

2.settings.pyファイルの編集

動画や画像を扱う場合は、settings.pyファイルに追記が必要
BASE_DIR = Path(__file__).resolve().parent.parent
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR, 'media'

3.urls.pyファイルの編集

url.pyファイルに以下を全て追加する。
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
    path('videos/', include('videos.urls')),
]

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Discussion