Vimos no último artigo dessa série como enviar e exibir variáveis Python em templates com o Jinja2. Continuando a série, agora veremos como utilizar estruturas de condição e repetição no Jinja2.
Estruturas de condição
Para utilizar estruturas de condição no Jinja2 é bem simples. Imagine que temos, em uma variável, a representação de um usuário com seu ID, nome e tipo do usuário (cliente ou funcionário) e queremos exibir em um template a frase “bem-vindo cliente” ou “bem-vindo funcionário” a depender do seu tipo.
Este é um exemplo claro do uso de estruturas condicionais e no Jinja2 este processo é muito simples, como poderemos ver abaixo:
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/teste")
def index():
usuario = [1, "João da Silva", "funcionario"]
return render_template('index.html', usuario=usuario)
if __name__ == "__main__":
app.run()
Ao enviar a variável usuario
para o template index.html
, agora só é preciso verificar o valor na posição 2 da lista e, assim, verificar seu tipo no Jinja2:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% if usuario[2] == "cliente" %}
Bem-vindo cliente
{% else %}
Bem-vindo funcionário
{% endif %}
</body>
</html>
Agora, ao acessar o template index.html
no navegador, teremos o seguinte resultado:
A sintaxe das estruturas de condição no Jinja2 é bem simples, basta declarar o comando entre {% %}
e, ao finalizar a estrutura, declarar um {% endif %}
.
Estrutura de repetição
O uso de estruturas de repetição também é algo muito simples no Jinja2. Imagine que temos uma lista de nomes de funcionários e queremos percorrê-la para exibir em nossa página.
Curso Flask - Templates com Jinja2
Conhecer o cursoPara isso, basta utilizar um for
e percorrer toda a lista exibindo os nomes como podemos ver abaixo:
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/teste")
def index():
usuarios = ["João da Silva", "Maria da Silva", "Joana da Silva",
"Pedro da Silva", "José da Silva"]
return render_template('index.html', usuarios=usuarios)
if __name__ == "__main__":
app.run()
Agora, para exibir o conteúdo da variável usuarios
no template, utilizamos a seguinte sintaxe:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% for usuario in usuarios %}
<h1>{{usuario}}</h1>
{% endfor %}
</body>
</html>
Agora, ao acessar o template index.html
no navegador, teremos o seguinte resultado:
As estruturas de repetição facilitam (e muito) quando precisamos exibir diversos dados e não queremos duplicidade de código, já que uma lista será percorrida e, para cada elemento, será impresso seu valor.
Conclusão
Como vimos neste artigo, o uso de estruturas de condição e repetição no Jinja2 é bem simples e facilita (e muito) a criação dos templates em uma aplicação Flask.