はじめに
私のアプリではデータファイルはとりあえず static/data に配置していました。
しかし、これらのファイルはフロントエンドではなく、主にviews.pyなどのバックエンドのみから読み込んで処理をしていたため、「本当にstaticに置くべきなのか?」と疑問に感じました。
そこで今回は、バックエンド専用データを app/data フォルダへ移行した際の整理内容や、変更後に必要だった操作についてまとめます。
目次
1. なぜstatic/dataに置かない方がよいのか
Djangoのstaticフォルダは、本来以下のような「ブラウザへ配信する静的ファイル」を置く場所です。
- CSS
- JavaScript
- 画像
- フロントエンドのfetchなどで取得するファイル
一方で、今回扱っていたのはブラウザではなくPython側だけで利用していたデータです。
このようなファイルをstaticに置いていると、
- collectstaticの対象になってしまう
- 不要なファイルまで公開領域へコピーされる
- 「用データ」と「backend用データ」が混在する
のような問題があります。
2. app/dataフォルダへ移行した構成
今回、バックエンド専用のJSONは各アプリの data フォルダへ移動します。
app/ ├── data/ │ ├── data.json
ファイルを移したら参照パスの変更も忘れないようにしましょう。
Djangoおすすめのディレクトリ構成はこちら↓
3. デプロイ後に行った操作
static関連の配置を変更した場合、本番環境ではcollectstaticを実行します。
以前のstatic/data配下に存在していた古いファイルが残さない場合は以下のコマンドを実行します。
python manage.py collectstatic --noinput --clear
このコマンドでは、
--clear→ 古いstaticファイルを削除--noinput→ 確認メッセージを省略
を行っています。
通常の collectstatic だけだと、移動前の古いファイルがSTATIC_ROOTに残る場合があります。
そのため、staticファイルを整理・移動した際は --clear を付けるようにしましょう。
Django公式ドキュメントはこちら
https://docs.djangoproject.com/en/stable/ref/contrib/staticfiles/
4. おわりに
最初は「とりあえずstatic/dataへ置いておけばいいか」と考えていましたが、用途によって置き場所を分けた方がかなり管理しやすくなりました。