2012-10-01 46 views
31

Necesito formatear números decimales en jinja2.¿Hay un enfoque directo para formatear números en jinja2?

Cuando necesito formatear fechas, que llama al método strftime() en mi plantilla, así:

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

Me pregunto si hay un enfoque similar para hacer esto más números.

¡Gracias de antemano!

+3

puede no hacer '{{ "{0: 0.2f}" formato (my_num)}.}' '{{O my_num | formato "% 0.2f"}}' (http: // wsgiarea .pocoo.org/jinja/docs/filters.html # format) –

+0

gracias Joran. La primera sugerencia funciona bien, pero al hacer esto: {{my_num | format "% 0.2f"}} da una excepción. – Lucas

+0

@Lucas El ejemplo con el filtro en el comentario de @ JoranBeasley es al revés; debería ser '"% 0.2f "| formato (my_num) '. Ver http://jinja.pocoo.org/docs/dev/templates/#format – Sam

Respuesta

42

usted puede hacerlo simplemente como esta, la forma en Python:

{{ '%04d' % 42 }} 

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

O utilizando ese método:

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

Yo personalmente prefiero el primero, ya que es exactamente igual que en Python.

+0

excepto que el método del formato de cadena se deprecia y debe evitarse cuando sea posible (supongo ... o algo así ...) –

+1

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

+0

@JoranBeasley, en cualquier caso, no está en desuso en la última versión 2.7 de GAE y en los próximos años no lo hago ver cualquier plan de Google para cambiar a la versión 3.0 ... Llevará algo de tiempo :) – Lipis

8

Se puede usar alrededor de él que le permitirá redondea el número a un uso determinado de precisión es:

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

El primer parámetro especifica la precisión (por defecto es 0), el segundo el método de redondeo desde la que se puede elegir 3:

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

quiero destacar el comentario de Joran Beasley porque me parece la mejor solución:

comentario original:

puede no hacerlo {{ "{0: 0.2f}". Formato (my_num)}} o {{| my_num formato "% 0.2f"}} (wsgiarea.pocoo.org/jinja/docs /filters.html#format) - Joran Beasley Oct 1 '12 a las 21: 07`

de hecho, obras fantásticamente.

Esto es solo el formato de cadena de pitón. Dado el primer argumento, {0}, formatéelo con el siguiente formato 0.2f.

4

El formateo y el relleno funcionan bien de la misma manera.

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