I modelli di Django: il test se la variabile è in lista o dict

chiedevo se c’è un modo per verificare se una variabile è all’interno di una lista o di dict in django utilizzando il built in tag e filtri.

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

Non la vedo in documenti e di tentare qualcosa di personalizzato, se non lo è, ma non voglio fare qualcosa che è già stato fatto.

Grazie

InformationsquelleAutor Paul | 2010-06-25

 

2 Replies
  1. 37

    In Django 1.2, si può solo fare

    {% if var in the_list %}

    come in Python.

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

    @register.filter
    def is_in(var, obj):
        return var in obj
    • l’elenco in template: {% if var in ['item1','item2','item3'] %}
    • Ho appena provato e posso confermare che, come di Django 1.5.1, list non essere definito in if frase simile.
    • come possiamo fare allora?
    • passare nel contesto e quindi di lavoro.
  2. 3

    Desidera passare una virgola stringa separata dal modello? Creare un custom tag:

    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 come questo:

    {% 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 %}

Lascia un commento