DjangoテンプレートのHTMLでCSSファイルなどの静的ファイルを参照したいとき、参照元に注意しないといけません。ローカル環境のみで使うのであれば、絶対パスでもいいのですが、チーム開発などでプロジェクト内に残しておきたい場合は別の書き方をしないといけません。
今知っている限りでは2つ静的ファイルを参照する方法があります。
作業環境:
macOS Sierra バージョン10.12.5
Python 2.7.10
Django 1.8.1
アプリケーションのディレクトリに置く
デフォルトの設定では使うアプリケーション以下にstaticディレクトリを作成するとDjango側で読みこんでくれます。
my_app
└── static
└── my_app
├── css
└── js
参照したいディレクトリのリストを定義する
別なところに置きたい場合はそのディレクトリが参照できるように、設定ファイルのSTATICFILES_DIRSにパスを追加するとファイルを検索してくれるようになります。
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
特にDjangoのadmin画面のcssを変更したいといった場合は注意が必要です。admin画面で使用しているbase.cssなどはPCにインストールしたPython内のDjangoが参照元となっているため、プロジェクトのファイルとは別々の扱いになっています。プロジェクトでadmin画面を変更したい場合などは、Django内からテンプレートとCSSをコピーしてきて参照できるようにする必要があります。