2010-06-25 19 views
14

se preguntaba si hay una forma de comprobar si una variable está dentro de una lista o dict en django usando las etiquetas y los filtros integrados.Plantillas de Django: probando si la variable está en la lista o dict

Es decir: {% if var|in:the_list %}

no veo que en la documentación, e intentará algo a medida, si no es así, pero no quiero hacer algo que ya se ha hecho.

Gracias

Respuesta

29

En Django 1.2, sólo puede hacer

{% if var in the_list %} 

como lo haría en Python.

De lo contrario sí, se necesita un filtro personalizado - es un revestimiento de tres embargo:

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

puede la lista estará en la plantilla como: '{ % si var en ['item1', 'item2', 'item3']%} ' – Sevenearths

+3

@Sevenearths Acabo de probarlo y puedo confirmar que, a partir de Django 1.5.1, la lista ** no puede ** definirse en el declaración 'if' así. – Patrick

+0

¿cómo vamos a hacerlo entonces? – laycat

0

desea pasar una coma cadena separada de la plantilla? Crear un templatetag personalizado:

from django import template 
register = template.Library() 

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

A continuación, puede llamar así:

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

También funciona con variables:

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