web-dev-qa-db-fra.com

Existe-t-il une approche directe pour formater les nombres dans jinja2?

J'ai besoin de formater des nombres décimaux en jinja2.

Lorsque j'ai besoin de formater des dates, j'appelle la méthode strftime () dans mon modèle, comme ceci:

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

Je me demande s'il existe une approche similaire pour ce faire sur les chiffres.

Merci d'avance!

39
Lucas

Vous pouvez le faire simplement comme ceci, la manière Python:

{{ '%04d' % 42 }}

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

Ou en utilisant cette méthode:

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

Personnellement, je préfère le premier car c'est exactement comme en Python.

61
Lipis

Je veux souligner le commentaire de Joran Beasley parce que je trouve que c'est la meilleure solution:

Commentaire original:

ne pouvez-vous pas faire {{"{0: 0.2f}". format (my_num)}} ou {{my_num | format "% 0.2f"}} (wsgiarea.pocoo.org/jinja/docs/filters.html#format ) - Joran Beasley 1er octobre '12 à 21:07 '

En effet, {{ '{0:0.2f}'.format(100) }} fonctionne de façon fantastique.

C'est juste python formatage de chaîne. Étant donné le premier argument, {0}, formatez-le au format suivant 0.2f.

34

Vous pouvez utiliser l'arrondi pour vous permettre d'arrondir le nombre à une précision d'utilisation donnée:

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

Le premier paramètre spécifie la précision (la valeur par défaut est 0), le second la méthode d'arrondi parmi laquelle vous pouvez choisir 3:

'common' rounds either up or down
'ceil' always rounds up
'floor' always rounds down
10
Tkingovr

Le formatage et le remplissage fonctionnent bien de la même manière.

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