2011-12-09 22 views

risposta

46

Non c'è. Ma se siete un po 'di hacker ....

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

per calcolare un * B: {% widthratio A 1 B%}

di calcolare A/B: {% widthratio AB 1%}

per calcolare un^2: {% widthratio a 1 a%}

di calcolare (a + B)^2: {% widthratio a | aggiungere: B 1 a | aggiungere: B% }

di calcolare (A + B) * (C + D): {% widthratio A | aggiungere: B 1 C | aggiungere: D%}

Inoltre è possibile creare un filtro per la divisione in 2 minuti

+2

Questo è un uso interessante del tag widthratio, ma, si potrebbe certamente lasciare qualcuno grattarsi la testa cercando di capire quello che sta facendo, imo. – Brandon

+0

Grazie. Ma questo restituisce 'Caught TypeError durante il rendering: l'argomento float() deve essere una stringa o un numero? Errore per alcuni numeri – Sam

+1

Boo broken link –

16

Utilizzando un filtro personalizzato:

register = template.Library() 

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

Dovresti gestire il caso del numero mobile, potrebbe essere utile qualche tempo :-) –

+1

Potrebbe essere una divisione per zero, quindi suggerirei: 'def divide (value, arg): return (int (valore)/int (arg)) if int (arg)! = 0 else 0 ' – jobima

4

vorrei utilizzare un modello personalizzato, ma se non si desidera è possibile utilizzare il widthratio costruita nel tag,

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

altro e xample

{% widthratio value 1150000 100 %} 

Sintassi:

{% widthratio parm1 parm2 parm3 %} 

Quindi, in pratica la sua utilizzati per il ridimensionamento delle immagini, ma è possibile utilizzarlo per la divisione. Quello che fa è: parm1/parm2 * parm3.

Spero che questo aiuti, più su widthratio here.

0

Esiste un modulo Python per eseguire operazioni matematiche nei modelli: Django-Mathfilters.

Contiene add come hai detto, ma anche div dividere:

8/3 = {{ 8|div:3 }} 
Problemi correlati