2011-12-09 18 views

Respuesta

46

No lo hay. Pero si usted es un poco de hackers ....

http://slacy.com/blog/2010/07/using-djangos-widthratio-template-tag-for-multiplication-division/

para calcular A * B: {% widthratio A 1 B}%

para calcular A/B: {% widthratio AB 1%}

para calcular un^2: {% widthratio a 1 a%}

para calcular (a + B)^2: {% widthratio a | añadir: B 1 a | añadir: B% }

para calcular (A + B) * (C + D): {% widthratio A | agregar: B 1 C | añadir: D%}

También se puede crear un filtro para la división en 2 minutos

+2

Eso es un uso interesante de la etiqueta widthratio, pero, sin duda podría dejar a alguien rascándose la cabeza tratando de averiguar lo que está haciendo, imo. – Brandon

+0

Gracias. Pero esto da 'Caught TypeError while rendering ': el argumento float() debe ser una cadena o un número' de error para algunos números – Sam

+1

Boo broken link –

16

el uso de un filtro personalizado:

register = template.Library() 

@register.filter 
def divide(value, arg): 
    try: 
     return int(value)/int(arg) 
    except (ValueError, ZeroDivisionError): 
     return None 
+0

Debe gestionar el caso del número flotante, podría ser útil en algún momento :-) –

+1

Podría ser una división por cero, por lo que sugeriría: 'def dividir (valor, arg): return (int (value)/int (arg)) if int (arg)! = 0 else 0 ' – jobima

4

me gustaría utilizar una nueva plantilla, pero si usted no desea puede utilizar el widthratio construida en la etiqueta,

{% widthratio request.session.get_expiry_age 3600 1 %} 

Otro correo jemplo

{% widthratio value 1150000 100 %} 

Sintaxis:

{% widthratio parm1 parm2 parm3 %} 

Así que básicamente es usado para escalar las imágenes, pero se puede usar para la división. Lo que hace es: parm1/parm2 * parm3.

Espero que esto ayude, más en widthratio here.

0

Hay un módulo de Python para hacer operaciones matemáticas en sus plantillas: Django-Mathfilters.

Contiene add como usted ha dicho, sino también div para dividir:

8/3 = {{ 8|div:3 }} 
Cuestiones relacionadas