I\'m having trouble with Django templates and CharField models.
So I have a model with a CharField that creates a slug that replaces spaces with underscores. If I cr
There is a built-in template tag spaceless
{% spaceless %}
<p>
<a href="foo/">Foo</a>
</p>
{% endspaceless %}
Which results:
<p><a href="foo/">Foo</a></p>
Read more in django documentation.
Let me preface this by saying @DNS's answer is correct as to why the spaces are not showing.
With that in mind, this template filter will replace any spaces in the string with
Usage:
{{ "hey there world"|spacify }}
Output would be hey there world
Here is the code:
from django.template import Library
from django.template.defaultfilters import stringfilter
from django.utils.html import conditional_escape
from django.utils.safestring import mark_safe
import re
register = Library()
@stringfilter
def spacify(value, autoescape=None):
if autoescape:
esc = conditional_escape
else:
esc = lambda x: x
return mark_safe(re.sub('\s', '&'+'nbsp;', esc(value)))
spacify.needs_autoescape = True
register.filter(spacify)
For notes on how template filters work and how to install them, check out the docs.