js,cssのminifyをDjango側で受け持ってくれる、かつ、template上で以下のように、上からがばっとラッパー的に使うだけでなんでもminifyしてくれる(※外部ドメインから取ってきた物を除く)ので、レガシーコードでもなんでも対応出来るのが良いと思った

使用例

1
2
3
4
5
6
7
{% compress js %}
<script src="なんやかんや.js"></script>
{% endcompress %}

{% compress css %}
<link rel="stylesheet" href="なんやかんや.css">
{% endcompress %}

インストール

1
2
3
4
$ pip install django-compressor

$ pip freeze | grep django-compressor
django-compressor==2.2

設定

settings.pyにいくつか変更を加えます

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// 「INSTALLED_APPS」に「compressor」を追加
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'material',
'material.frontend',
'compressor', # 追加
'webapp'
]

// settings.pyのどこでも良いので以下を追加
// Django1.10のデフォルトでは、STATICFILES_FINDERSは省略されているが
// 既にSTATICFILES_FINDERSがある場合は、「compressor.finders.CompressorFinder」の行のみ追加
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder', # 追加
)
COMPRESS_ENABLED = True # 追加