Django Smart Spaceless is a Django template tag application for minifying block-level HTML elements only.
It's just like spaceless
, but preserves white space between inline HTML elements. Useful for HTML where spaces directly between <a>
, <strong>
, and other inline elements is likely desired to be preserved. Packages the django-htmlmin project to be used as a template tag.
$ pip install django-smartspaceless
Add to settings.py
.
INSTALLED_APPS = [
# ...
'smartspaceless',
]
{% load smartspaceless_tags %}
{% smartspaceless %}
<p><a href="#">Link 1</a></p>
<p><a href="#">Link 2</a> <a href="#">Link 3</a></p>
{% endsmartspaceless %}
Result:
<p><a href="#">Link 1</a></p><p><a href="#">Link 2</a> <a href="#">Link 3</a></p>
The space between <a href="#">Link 2</a>
and <a href="#">Link 3</a>
is preserved. Removing that space would be bad.
Please note that django-htmlmin by default uses the html5lib parser, which prepends possibly missing <html><head></head><body>
and appends possibly missing </body></html>
tags in an effort to create valid HTML. The template tag changes this default behavior to use html.parser, the HTML parser in Python's standard library, which does not alter HTML fragments.