2012-10-01 3 views
31

Ich muss Dezimalzahlen in Jinja2 formatieren.Gibt es einen direkten Ansatz für Formatnummern in jinja2?

Wenn ich Daten formatieren müssen, nenne ich die strftime() -Methode in meiner Vorlage, wie folgt aus:

{{ somedate.strftime('%Y-%m-%d') }} 

Ich frage mich, ob es einen ähnlichen Ansatz ist dies über Zahlen zu tun.

Vielen Dank im Voraus!

+3

können Sie nicht tun '{{ "{0: 0.2f}" -Format (my_num)}.}' Oder '{{my_num | Format "% 0.2f"}}' (http: // wsgiarea .pocoo.org/jinja/docs/filters.html # format) –

+0

danke Joran. Der erste Vorschlag funktioniert OK, aber dabei: {{my_num | format "% 0.2f"}} gibt eine Ausnahme. – Lucas

+0

@Lucas Das Beispiel mit dem Filter in @ JoranBeasleys Kommentar ist von hinten nach vorne; es sollte "% 0.2f" | sein Format (my_num) '. Siehe http://jinja.pocoo.org/docs/dev/templates/#format – Sam

Antwort

42

Sie können es einfach so machen, der Python Weg:

{{ '%04d' % 42 }} 

{{ 'Number: %d' % variable }} 

Oder mit dieser Methode:

{{ '%d' | format(42) }} 

ziehe ich persönlich die ersten, da es genau wie in Python ist.

+0

cept, dass die Methode des Zeichenfolgenformats abgeschrieben wird und wenn möglich vermieden werden sollte (ich denke ... oder so ähnlich ...) –

+1

http : //docs.python.org/release/3.0.1/whatsnew/2.6.html#pep-3101 –

+0

@JoranBeasley in beiden Fällen ist es in der neuesten Version 2.7 auf GAE nicht veraltet und in den nächsten paar Jahren nicht Siehe irgendwelche Pläne von Google, um Version 3.0 zu aktivieren. Es wird einige Zeit dauern :) – Lipis

8

Sie verwenden könnte um sie herum werden Sie rund um die Zahl auf eine bestimmte Genauigkeit Nutzung lassen ist:

round(value, precision=0, method='common') 

Der erste Parameter die Präzision (Standardeinstellung ist 0) gibt an, die zweite die Rundungsmethode, von dem Sie kann 3 wählen:

'common' rounds either up or down 
'ceil' always rounds up 
'floor' always rounds down 
20

ich will Joran Beasley Kommentar markieren, weil ich es die beste Lösung zu finden:

Original-Kommentar:

können Sie nicht tun {{ "{0: 0.2f}". Format (my_num)}} oder {{my_num | Format "% 0.2f"}} (wsgiarea.pocoo.org/jinja/docs /filters.html#format) - Joran Beasley 1. Oktober '12 21: 07`

, in der Tat Werke phantastisch.

Dies ist nur Python-String-Formatierung. Geben Sie das erste Argument {0} mit folgendem Format ein: 0.2f.

4

Formatierung und Auffüllung funktionieren auf die gleiche Weise.

{{ "{0}".format(size).rjust(15) }}