[pyar] Separación de lógica y presentación en Django

Federico Heinz fheinz en vialibre.org.ar
Mar Sep 7 21:08:00 ART 2010


On 07/09/2010, Ale wrote:
> una que se me ocurre es que hagas un filtro[0] de django que haga
> justamente lo que haría get_class()
> <td class={{ foo|get_class }}>

Revisándolo, me dí cuenta de que sí, lo que necesito es un filtro...
pero uno menos hardwired que el que proponías, que me permita
escribir esto:

<td class="{{foo.type|select:'c1|c2|c3|c4'}}">{{foo.name}}</td>

De esa manera, me queda *todo* lo que tiene algo que ver con la
presentación dentro del template, que es lo que yo quería.

El filtro me quedó así:

    from django import template

    register = template.Library()

    @register.filter
    def select(index, values):
        """
        Select one of several alternative texts based on an index
        """
        v = values.split('|')
        try:
            return v[index]
        except IndexError:
            return u''
    select.is_safe=True

Sigue estando hardwired el '|'... se lo podría hacer que use el
primer caracter del string como separador dentro de values[1:]...
pero no sé si es peor.

	Fede



More information about the pyar mailing list