Jinja: filtros buitin `round` e `int` não funcionam

Criado em 14 nov. 2013  ·  4Comentários  ·  Fonte: pallets/jinja

Estou usando Jinja2==2.7.1

In [2]: t = jinja2.Template("{{ x/2 | round }}") #does not work?

In [3]: t
Out[3]: <Template memory:161e910>

In [4]: t.render(x=7)
Out[4]: u'3.5'

In [5]: t2 = jinja2.Template("{{ x | float }}") # float works

In [6]: t2.render(x=3)
Out[6]: u'3.0'

In [12]: t3 = Template("{{ x / 2 | int }}") # does not work

In [13]: t3.render(x=7)
Out[13]: u'3.5'

Comentários muito úteis

Meu palpite seria a precedência do operador. x/2 | round é analisado como x / (2 | round)

Todos 4 comentários

Meu palpite seria a precedência do operador. x/2 | round é analisado como x / (2 | round)

sim você está certo,
Obrigado

In [6]: t = jinja2.Template("{{ (x/2) | int }}")

In [7]: t.render(x=5)
Out[7]: u'2'

Parece que está relacionado a este https://github.com/mitsuhiko/jinja2/issues/119

Acabei de encontrar o problema exato!
Obrigado @hvnsweeting e @Naddiseo

Mesmo problema, mesma solução. No meu caso, foi no Home Assistant onde acabei com:
{{ ((states.input_number.guestroom_setpoint_shift.state | float) * 2) | int }}
Obrigado!

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Yannik picture Yannik  ·  4Comentários

guettli picture guettli  ·  5Comentários

Xion picture Xion  ·  5Comentários

harobed picture harobed  ·  6Comentários

mitsuhiko picture mitsuhiko  ·  3Comentários