Paul
Paul

Reputation: 241

Django templates: testing if variable is in list or dict

was wondering if there is a way to test if a variable is inside of a list or dict in django using the built in tags and filters.

Ie: {% if var|in:the_list %}

I don't see it in the docs, and will attempt something custom if not, but I don't want to do something that has already been done.

Thanks

Upvotes: 24

Views: 39953

Answers (3)

Daniel Mandelblat
Daniel Mandelblat

Reputation: 337

In Django 3... It's simply by:

someHtmlPage.html

<html>
    {%if v.0%}
        <p>My string {{v}}</p>
    {%else%}
        <p>My another typy {{v}}</p>
    {%endif%}
</html>

Upvotes: -3

dotcomly
dotcomly

Reputation: 2214

Want to pass a comma separated string from the template? Create a custom templatetag:

from django import template
register = template.Library()

@register.filter
def in_list(value, the_list):
    value = str(value)
    return value in the_list.split(',')

You can then call it like this:

{% if 'a'|in_list:'a,b,c,d,1,2,3' %}Yah!{% endif %}

It also works with variables:

{% if variable|in_list:'a,b,c,d,1,2,3' %}Yah!{% endif %}

Upvotes: 6

Daniel Roseman
Daniel Roseman

Reputation: 599610

In Django 1.2, you can just do

{% if var in the_list %}

as you would in Python.

Otherwise yes, you will need a custom filter - it's a three-liner though:

@register.filter
def is_in(var, obj):
    return var in obj

Upvotes: 41

Related Questions