Unknown Coder Unknown Coder - 6 months ago 70
Python Question

Replacing a character in Django template

I want to change

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


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

Official guide is here:


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()

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.