Gerar HTML a partir do Python não é divertido, e na verdade é bastante complicado porque você tem que fazer a escaping do HTML com escape por conta própria para manter a aplicação segura. Por causa disso, o Flask configura o mecanismo de template Jinja2 automaticamente para você. Templates podem ser usados para gerar qualquer tipo de arquivo de texto. Para aplicações web, você principalmente gerará páginas HTML, mas também pode gerar markdown, texto simples para e-mails e qualquer outra coisa.
Neste laboratório, aprenderemos como usar o mecanismo de template Jinja2 para gerar templates seguros e dinâmicos.
Renderizar um template
Nesta etapa, você implementará a renderização de templates com o mecanismo de template Jinja2.
Abra o arquivo rendering_templates.py e, primeiro, importe a classe Flask e render_template. Em seguida, crie uma instância da classe Flask.
from flask import Flask, render_template
app = Flask(__name__)
Em seguida, usamos o decorador route() para criar duas rotas, / e /<name>, para compartilhar uma função de visualização chamada hello. Para renderizar um template, você pode usar o método render_template(). Ele é fornecido pelo Flask para renderizar templates com o mecanismo de template Jinja2. Tudo o que você precisa fazer é fornecer o nome do template e as variáveis que deseja passar para o mecanismo de template como argumentos de palavra-chave. Na função de visualização, usamos o método render_template() para renderizar o template hello.html com uma variável chamada name.
Criando um ponto de entrada main do script para iniciar a aplicação Flask em uma porta (por exemplo, port=5000). Em seguida, habilitando o modo debug.
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000, debug=True)
O Flask procurará templates na pasta templates por padrão. Portanto, precisamos criar uma pasta chamada templates e criar o arquivo chamado hello.html dentro dessa pasta. Podemos criar a pasta e o arquivo necessários executando o seguinte comando no terminal.
cd ~/project
mkdir templates
cd templates
touch hello.html
Abra o arquivo templates/hello.html e escreva os seguintes códigos:
<!doctype html>
<title>Hello from Flask</title>
{% if name %}
<h1>Hello {{ name }}!</h1>
{% else %}
<h1>Hello, World!</h1>
{% endif %}
Os códigos acima usam o bloco condicional em Jinja2. Ele verifica se a variável name é verdadeira (não None ou vazia). Se for, o conteúdo Hello {{ name }}! será exibido. Caso contrário, o conteúdo Hello, World! será exibido.
Para executar a aplicação, primeiro use os seguintes comandos para iniciar a aplicação Flask no terminal:
cd ~/project
python3 rendering_templates.py
Em seguida, abra a aba "Web 5000" localizada no topo da interface e atualize a interface. E então você deverá ver a página exibindo Hello, World!.
Para a rota /<name>, você pode adicionar um sufixo diretamente na barra de URL acima. Por exemplo, abaixo está um sufixo flask inserido na barra de URL com a porta 5000, e ele exibe Hello, flask! como sua saída.
Você pode tentar diferentes caminhos /<name> na barra de URL, a saída também será alterada correspondente.
Resumo
Neste laboratório, aprendemos como renderizar nossos templates usando o mecanismo de template Jinja2, utilizando o método render_template(). Este método não apenas renderiza templates de forma vívida, mas também permite a escaping automática, o que ajuda a prevenir potenciais ataques XSS.