Replacing a character in Django template

django, django-templates, python

Solution

`dj.name.replace('&', 'and')` You can not invoke method with arguments.You need to write a custom filter.

Official guide is here:

https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

Ok, here is my example, say, in an app named 'questions', I want to write a filter `to_and` which replaces '&' to 'and' in a string.

In /project_name/questions/templatetags, create a blank `__init__.py`, and `to_and.py` which goes like:

from django import template

register = template.Library()

@register.filter
def to_and(value):
    return value.replace("&","and")

In template , use:

{% load to_and %}

then you can enjoy:

{{ string|to_and }}

Note, the directory name `templatetags` and file name `to_and.py` can not be other names.

Problem

I want to change `&` to `and` in the my page's meta description. This is what I tried ``` {% if '&' in dj.name %} {{ dj.name.replace('&', 'and') }} {% else %} {{ dj.name }} {% endif %} ``` This doesn't work. It still shows as `&`

Original source