2010-06-25 5 views
14

chiedevo se c'è un modo per testare se una variabile è all'interno di un elenco o dict in django usando i tag e i filtri integrati.Modelli Django: test se la variabile è in lista o dict

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

io non lo vedo nella documentazione, e tenterà qualcosa di personalizzato se no, ma non voglio fare qualcosa che è già stato fatto.

Grazie

risposta

29

In Django 1.2, si può solo fare

{% if var in the_list %} 

come si farebbe in Python.

Altrimenti sì, avrete bisogno di un filtro personalizzato - è un tre-liner però:

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

può la lista sia nel modello come: '{ % se var in ['item1', 'item2', 'item3']%} ' – Sevenearths

+3

@Sevenearths L'ho appena provato e posso confermare che, a partire da Django 1.5.1, l'elenco ** non può ** essere definito nel 'if' dichiarazione del genere. – Patrick

+0

come faremo a farlo allora? – laycat

0

voglio passare un separati da virgola stringa dal modello? Creare un templatetag personalizzato:

from django import template 
register = template.Library() 

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

È quindi possibile chiamare in questo modo:

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

Funziona anche con le variabili:

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