How to See if a String Contains Another String in Django Template
Solution 1:
Try removing the extra {{...}}
tags and the "..."
quotes around request.build_absolute_uri
, it worked for me.
Since you are already within an {% if %}
tag, there is no need to surround request.build_absolute_uri
with {{...}}
tags.
{% if 'index.html' in request.build_absolute_uri %}
hello
{% else %}
bye
{% endif %}
Because of the quotes you are literally searching the string "{{ request.build_absolute_uri }}"
and not the evaluated Django tag you intended.
Solution 2:
Maybe too late but here is a lightweight version :
{{ 'hello 'if 'index.html' in request.build_absolute_uri else 'bye' }}
This can be tested with Jinja:
>>> from jinja2 import Template
>>> t = Template("{{ 'hello 'if 'index.html' in request.build_absolute_uri else 'bye' }}")
>>> request = {}
>>> request['build_absolute_uri']='...index.html...'
>>> t.render(request=request)
'hello '
>>> request['build_absolute_uri']='something else...'
>>> t.render(request=request)
'bye'
>>>
Solution 3:
I am adding the negative option of "not contains":
{% if 'index.html' not in request.build_absolute_uri %}
hello
{% else %}
bye
{% endif %}
And:
{{ 'hello 'if 'index.html' not in request.build_absolute_uri else 'bye' }}