Noté que hay un filtro integrado add
, pero no pude encontrar divide
.¿Hay un filtro para dividir para Django Template?
Soy nuevo en Django y no estoy seguro de si hay un filtro de este tipo.
Noté que hay un filtro integrado add
, pero no pude encontrar divide
.¿Hay un filtro para dividir para Django Template?
Soy nuevo en Django y no estoy seguro de si hay un filtro de este tipo.
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
Salida http://djangosnippets.org/snippets/2424/
la esperanza de que le ayuda a cabo.
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
Debe gestionar el caso del número flotante, podría ser útil en algún momento :-) –
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
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.
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 }}
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
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
Boo broken link –