1
resposta

como fazer operação matemática com o Jinja2

Estou usando o Jinja2 para criar meu projeto com Django, e nos exercicios eu me deparei com essa situação, no meu template index.html ao tentar usar alguma espressão MATH, conforme observei na documentação, nenhum dos exemplos abaixo funcionou.

{{ 1 + 1 }}

{{ 3 - 2 }}

{{ "Hello " ~ name ~ "!" }}

ao renderizar mostra o erro: django.template.exceptions.TemplateSyntaxError: Could not parse the remainder: ' + 1' from '1 + 1'

django.template.exceptions.TemplateSyntaxError: Could not parse the remainder: ' ~ name ~ "!"' from '"Hello " ~ name ~ "!"'

Se alguém puder me ajudar agradeço!

1 resposta

Olá Fábio, tudo bem?

Peço desculpas pela demora em obter um retorno

O erro que você está vendo é porque o Jinja2 não suporta expressões matemáticas como você está tentando fazer, Para realizar operações matemáticas no Jinja2, você precisa usar o filtro math ou a função eval. Aqui está um exemplo de como você pode fazer isso:

{{ 1|math('+', 1) }}

{{ 3|math('-', 2) }}

No primeiro exemplo, usamos o filtro math com o operador de adição +. No segundo exemplo, usamos o filtro math com o operador de subtração -. Isso deve resolver o problema que você está enfrentando.

Quanto ao terceiro exemplo que você mencionou, a concatenação de strings é feita usando o operador ~. No entanto, é importante notar que o Jinja2 não suporta a concatenação de strings dessa maneira no contexto do template. Você pode fazer a concatenação de strings no código Python antes de passar o valor para o template.

Espero que isso ajude e reforço que em casos de dúvidas, conte sempre com o fórum da comunidade Alura! Bons estudos!

Sucesso

Um grande abraço e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!