Buscar este blog

viernes, 28 de junio de 2013

Como saber el tipo de dato de una variable en Template Django

¿Qué pasa cuando tenemos una variable en el template y necesitamos saber de que tipo es para hacer una cosa u otra? Queremos saber si es de tipo  por ejemplo.

Necesitamos crear un filtro, como viene aquí. Aunque claro, ahora vamos a poner otros filtros como sigue:
proyecto/app/templatetags/mis-filtros.py


from django import template

register = template.Library()

@register.filter(name:'check_type')
def check_type(obj, stype):
     try:
           t = obj.__class__.__name__
          return t.lower() == str(stype).lower()
     except:
           pass
     return False

@register.filter(name:'field_type')
def field_type(field, ftype):
      if ftype == '': #NOTA: Eso son dos comillas simples
           return field.field.widget.__class__.__name__
      return check_type(field.field.widget, ftype)

En el html lo usamos así si queremos que actúe sabiendo el tipo de dato:


{% load mis-filtros %}
{% for field in form %}
      {% if field|field_type:'Select' %}
           La variable es select. Hacer lo que sea
      {% endif %}
{% endfor %}

O así si queremos que nos muestre el tipo de dato que es:


{% load mis-filtros %}
{% for field in form %}
      {{ field|field_type:'' }}{# NOTA: Eso son dos comillas simples#}
{% endfor %}

Enlaces: djangosnippets stackoverflow questions

Si necesitas ayuda escribe a través del formulario de contacto en la parte derecha.
Nota: Antes de acceder al formulario aparecerá un anuncio, que en 5 segundos podrás cerrar.

No hay comentarios:

Publicar un comentario

Gracias por comentar.

Si has realizado alguna consulta, responderemos lo antes posible. Gracias