Django application, providing simple template loader. It reduces HTML output in templates by stripping out whitespace characters between HTML and django template tags.
Things to note:
- It does not make any fancy compression, to do that use GZip Middleware.
- To compress CSS and JS use django-compressor.
pip install django-template-minifier
Modify Your Django project settings's module.
TEMPLATE_LOADERS = (('django.template.loaders.cached.Loader', (
'template_minifier.template.loaders.filesystem.Loader',
'template_minifier.template.loaders.app_directories.Loader',
)),
)
Note cached loader, we prepare template only once. Be sure You clean up Your cache during deploy.
TEMPLATE_LOADERS = (
'template_minifier.template.loaders.filesystem.Loader',
'template_minifier.template.loaders.app_directories.Loader',
)
Each refresh recalculate template.
Be happy having less spaces and new lines in Your templates!
Using modified settings You can:
- turn off stripping spaces between HTML tags
TEMPLATE_MINIFIER_HTML_TAGS = False # default = True
- turn off stripping spaces between Django template tags (\s{%, %}\s)
TEMPLATE_MINIFIER_TEMPLATE_TAGS = False # default = True
- turn off all stripping
TEMPLATE_MINIFIER = False # default = True
- run Your own strip_function, which preprocess templates
TEMPLATE_MINIFER_STRIP_FUNCTION = 'template_minifier.utils.strip_spaces_in_template'
(There is a typo in variable name, see #2 for details)
- use only in production
if DEBUG:
TEMPLATE_MINIFIER = False
We do not support verbatim tag. Details here. PR welcome :)
Don't use // one line comments in Your inline javascript <script> or .js templates. In some cases, if You are using lot of {% if %} there, it can comment out }; or }, for example:
// comment something - !!it's evil!!
{% if %}
function name(){
}
{% endif %}
Use / / instead
/* comment something - it's nice and clean <3! */
{% if %}
function name(){
}
{% endif %}
Or just set TEMPLATE_MINIFIER_TEMPLATE_TAGS = False
- Added support for template loader changes in Django 1.9+
- Initial package, no tests :/
- Tests!
- {% new_line %} template_tag
- {% space %} template_tag
- support for {% verbatim %} tag