2009-11-09 16 views

Respuesta

2

Este es uno de los poderes del lenguaje de plantillas de Django no le da. Tiene algunas opciones:

  1. Calcule este valor en su vista y páselo a la plantilla en una nueva variable.

  2. Instalar una biblioteca de complemento de etiquetas de plantilla que le permite obtener comparaciones más ricos, por ejemplo: http://www.djangosnippets.org/snippets/1350/

  3. uso de un lenguaje de plantillas totalmente diferente, si usted piensa que va a correr en frecuencia limitaciones lenguaje de plantillas .

4

Triste, pero no hay tal funcionalidad en la etiqueta 'if' de django. Hay un rumors that smarter if tag will be added in 1.2., al menos está en la lista High priority.

Alternativamente, puede utilizar "smart_if" tag from djangosnippets.com

O usted puede añadir su propio filtro (igual como filtro length_is) - pero es sólo añadir más código inútil :(

from django import template 
register = template.Library() 

def length_gt(value, arg): 
    """Returns a boolean of whether the value is greater than an argument.""" 
    try: 
     return len(value) > int(arg) 
    except (ValueError, TypeError): 
     return '' 
length_gt.is_safe = False 
register.filter(length_gt) 

Para más información consultar django docs

0

Tal vez this será de alguna ayuda?

Comprobación de tamaños de colección en Django plantillas es algo limitado. La única solución que estaba usando, fue pasar otro parámetro de la vista a la plantilla, pero para ser honesto, si depende de lo que está tratando de lograr.

56

A partir de Django 1.2; si soporta operaciones booleanas y filtros, para que pueda escribir esto como:

{% if myarr|length > 1 %} 
<!-- printing some html here --> 
{% endif %} 

ver el proyecto Django documentation porque si con filtros.

+0

Una cosa curiosa: en 1.6 si utiliza espacios como 'myarr | length', django lo imprimirá, pero si intentas comparar, obtienes un error. Para comparar, tuve que eliminar los espacios. – aldux

Cuestiones relacionadas