結論
プロジェクトの直下などに共通して使用する「staticファイル」をまとめたフォルダを作成すればいいと思います。
作成後は、プロジェクトのsettings.py
ファイルにSTATICFILES_DIRS
変数を追加します。その変数に作成したフォルダのパスを配列の形で格納します。
解説
djangoでは、staticファイルを扱う場合、基本は任意アプリのフォルダ内に「static」という名前のフォルダを作成します。そしてそのフォルダに「staticファイル」を配置します。この時、複数のアプリに共通して使用する「staticファイル」を、どこかのアプリの「static」フォルダに入れるのは個人的に違和感を感じました。複数のアプリに共通して使用する「staticファイル」はプロジェクトのどこに配置すればいいか、調査をしてまとめた結果を記事にします。
調査した結果
djangoプロジェクトのsettings.py
は、アプリフォルダ以外で「staticファイル」をどこにまとめているパスを指定できるようです。それを使用すれば、プロジェクト直下などに「staticファイル」をまとめられそうです。
手順
- プロジェクトの直下などに「static」という名前のフォルダを作成します。(「共通staticフォルダ」ということにします。)
- プロジェクトの
settings.py
に下記のコードを追加します。settings.py# ... STATICFILES_DIRS = [ # 「共通staticフォルダ」の配置パスに合わせて適宜調整する os.path.join(BASE_DIR, "static") ] # ...
- これで、「共通staticフォルダ」内に作成したstaticファイルを使用することができます。
テンプレート.html
{# staticファイル読み込み #} {% load static %} {# 「共通staticフォルダ」内にhoge.jpgを配置した場合 #} <img src="{% static "hoge.jpg" %}"/> {# 「共通staticフォルダ」内にフォルダがあってもパスを指定すればOK #} <img src="{% static "pngs/hoge.png" %}"/>
これで、複数のアプリに共通して使用する「staticファイル」を違和感なく配置できそうです。
以上です。
参考