LoginSignup
0
1

djangoで、複数のアプリに共通して使用する「staticファイル」の配置について

Posted at

結論

プロジェクトの直下などに共通して使用する「staticファイル」をまとめたフォルダを作成すればいいと思います。
作成後は、プロジェクトのsettings.pyファイルにSTATICFILES_DIRS変数を追加します。その変数に作成したフォルダのパスを配列の形で格納します。

解説

djangoでは、staticファイルを扱う場合、基本は任意アプリのフォルダ内に「static」という名前のフォルダを作成します。そしてそのフォルダに「staticファイル」を配置します。この時、複数のアプリに共通して使用する「staticファイル」を、どこかのアプリの「static」フォルダに入れるのは個人的に違和感を感じました。複数のアプリに共通して使用する「staticファイル」はプロジェクトのどこに配置すればいいか、調査をしてまとめた結果を記事にします。

調査した結果

djangoプロジェクトのsettings.pyは、アプリフォルダ以外で「staticファイル」をどこにまとめているパスを指定できるようです。それを使用すれば、プロジェクト直下などに「staticファイル」をまとめられそうです。

手順

  1. プロジェクトの直下などに「static」という名前のフォルダを作成します。(「共通staticフォルダ」ということにします。)
  2. プロジェクトのsettings.pyに下記のコードを追加します。
    settings.py
    # ...
    STATICFILES_DIRS = [
        # 「共通staticフォルダ」の配置パスに合わせて適宜調整する
        os.path.join(BASE_DIR, "static")
    ]
    # ...
    
  3. これで、「共通staticフォルダ」内に作成したstaticファイルを使用することができます。
    テンプレート.html
    {# staticファイル読み込み #}
    {% load static %}
    {# 「共通staticフォルダ」内にhoge.jpgを配置した場合 #}
    <img src="{% static "hoge.jpg" %}"/>
    {# 「共通staticフォルダ」内にフォルダがあってもパスを指定すればOK #}
    <img src="{% static "pngs/hoge.png" %}"/>
    

これで、複数のアプリに共通して使用する「staticファイル」を違和感なく配置できそうです。
以上です。

参考

0
1
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
1