No último artigo, vimos o que é e o quão fantástico é a template engine Jinja2. Vimos que ela facilita (e muito) nosso trabalho quando precisamos criar templates para aplicações Python. Dando continuidade à nossa série de artigos sobre o Jinja2, agora veremos como enviar e exibir dados com Jinja2 em aplicações Flask.
Aplicação base
Vamos utilizar como base a aplicação vista no artigo que explica como retornar páginas HTML em aplicações Flask. É uma aplicação simples que recebe uma requisição e devolve como resposta uma página HTML, todo o processo de criação pode ser visto no artigo citado.
Enviando dados
Agora que já sabemos como retornar arquivos HTML em aplicações Flask, vamos entender como enviar dados para serem exibidos nestes templates.
Curso Flask - Fundamentos
Conhecer o cursoPara isso, basta enviar a variável que queremos como podemos ver no código abaixo:
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/teste")
def index():
nome_da_variavel = "Treinaweb"
return render_template('index.html', variavel=nome_da_variavel)
if __name__ == "__main__":
app.run()
Como visto acima, para enviar uma variável para um template, basta adicioná-la como parâmetro do método render_template
.
Exibindo dados no template
Agora que já sabemos como enviar variáveis para nossos templates, precisamos exibir as informações. Para isso, basta acessar a variável no template da seguinte forma:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>Olá {{variavel}}</h1>
</body>
</html>
Para exibir o valor de uma variável, basta adicioná-la entre chaves duplas {{}}
. Com isso, ao acessar a rota /teste
teremos o seguinte resultado:
Curso Flask - Templates com Jinja2
Conhecer o cursoVale lembrar que podemos enviar qualquer tipo de variável, seja uma lista, tupla, etc, como podemos ver abaixo:
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/teste")
def index():
nome_da_variavel = [1, "Treinaweb"]
return render_template('index.html', variavel=nome_da_variavel)
if __name__ == "__main__":
app.run()
Para exibir as informações, basta acessar pela posição, como podemos ver abaixo:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>Olá {{variavel[0]}} {{variavel[1]}}</h1>
</body>
</html>
Conclusão
Neste artigo, vimo como enviar e exibir dados com Jinja2, recurso que facilita (e muito) o desenvolvimento dos nossos templates. No próximo artigo dessa série, veremos como utilizar estruturas de repetição e condição.