Flask

Utilizando estruturas de condição e repetição no Jinja2

Veja neste artigo como utilizar estruturas de condição e repetição no Jinja2.

há 3 anos 2 meses

Formação Desenvolvedor Flask Full-Stack
Conheça a formação em detalhes

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:

Utilizando estruturas de condição no Jinja2

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.

Flask -  Templates com Jinja2
Curso Flask - Templates com Jinja2
Conhecer o curso

Para 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:

Estruturas de repetição no Jinja2

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.

Autor(a) do artigo

Fagner Pinheiro
Fagner Pinheiro

Professor na TreinaWeb e graduado em Sistemas de Informação pelo Instituto Federal da Bahia. Apaixonado por desenvolvimento web, desktop e mobile desde os 12 anos de idade. Já utilizou todos os sistemas operacionais possíveis, mas hoje se contenta com o OSX instalado em seu desktop. Quando não está trabalhando, é IGL e Awper do time de CS:GO da Treinaweb. Até passou em uma peneira do Cruzeiro, mas preferiu estudar Python.

Todos os artigos

Artigos relacionados Ver todos