Flask Python: Guia Completo para Iniciantes (com exemplos!)

O Python Flask se destaca como um microframework eficiente para o desenvolvimento de aplicações web em Python. Sua natureza flexível e altamente personalizável o torna uma opção atraente, especialmente por sua facilidade de aprendizado. Por isso, é uma escolha frequente na criação de servidores web. Este artigo explora o Python Flask em detalhes, abordando sua definição, comparações com outros frameworks e um guia prático para a criação de um aplicativo básico em Python.

O que é Flask?

Flask é um framework projetado para a construção de servidores web em Python. Uma de suas principais vantagens é a não imposição de uma estrutura de diretório rígida, oferecendo liberdade aos desenvolvedores.

Adicionalmente, o Flask se abstém de opiniões preconcebidas, permitindo que você escolha as ferramentas que melhor se adaptam às suas necessidades para tarefas como conexão com bancos de dados e validação de entradas de formulários.

Como mencionado, o Flask é utilizado na construção de servidores web. Um servidor web é essencialmente um software que responde a requisições HTTP com dados e arquivos relevantes.

Flask vs. Outros Frameworks

Esta seção apresenta uma breve comparação entre o Flask e dois outros frameworks populares: Django e FastAPI. Avaliaremos os benefícios e limitações do Flask em comparação com essas alternativas.

Flask vs. Django

O Flask é um microframework leve, oferecendo aos desenvolvedores simplicidade e flexibilidade. Essa abordagem permite construir a aplicação de acordo com a necessidade. No entanto, essa liberdade implica um maior esforço por parte do desenvolvedor.

Em contraste, o Django é um framework “completo”, fornecendo muitas ferramentas pré-configuradas. Isso possibilita um desenvolvimento e lançamento mais rápidos, mas sacrifica a flexibilidade e apresenta uma curva de aprendizado mais acentuada.

Consequentemente, o Flask é ideal para projetos de pequeno a médio porte, enquanto o Django é frequentemente usado em projetos maiores e mais complexos.

Leia também: Diferenças entre Flask e Django

Flask vs. FastAPI

FastAPI é um framework relativamente novo, focado na construção de APIs em Python. Ele é conhecido por sua velocidade e facilidade de uso, além de oferecer monitoramento integrado como funcionalidade. No entanto, sendo um framework recente, possui um ecossistema e comunidade menores, e seu uso está mais direcionado a APIs.

Por outro lado, o Flask é mais versátil, sendo adequado tanto para APIs quanto para renderização de arquivos estáticos. É leve e relativamente fácil de usar, embora seja um pouco mais lento que o FastAPI.

O Flask é mais apropriado para aplicações web que precisam renderizar HTML, enquanto o FastAPI é mais adequado para a criação de APIs.

Leia também: FastAPI vs. Flask: Qual dos dois é o certo para você?

Como criar um aplicativo no Flask

Nesta seção, vamos construir um aplicativo Flask simples para exibir HTML e fornecer dados através de uma API. O objetivo é demonstrar o processo de construção de uma aplicação Flask, não ser um tutorial completo.

Pré-requisitos

Para acompanhar este guia, é necessário ter conhecimento básico de Python 3 e familiaridade com o protocolo HTTP, embora este não seja um requisito obrigatório.

Antes de começar a criar um aplicativo no Flask, é necessário ter o Python instalado. Se precisar de um guia sobre como fazer isso, você pode encontrar um vídeo explicativo aqui:

Crie um Ambiente Virtual

Comece criando uma pasta para o seu projeto. Os comandos aqui serão executados no Terminal Bash. A pasta será criada com este comando:

mkdir flask-tut

Entre na pasta criada:

cd flask-tut

Dentro da pasta do projeto, crie um ambiente virtual com o seguinte comando. Isso assegura que as dependências instaladas não entrem em conflito com as dependências de outros projetos:

python3 -m venv venv

Será criada uma pasta chamada `venv`. Você pode verificar isso utilizando o comando:

ls

Ative o Ambiente Virtual

Ativar o ambiente virtual é fácil. No Terminal Bash, execute:

source venv/bin/activate

O seu terminal deverá mudar de `$` para `(venv) $`.

Para mais informações sobre ambientes virtuais, acesse este artigo sobre ambientes virtuais em Python.

Instale o Flask

Com o ambiente virtual ativado, podemos prosseguir com a instalação do Flask. Utilize o pip para isso:

pip install Flask

Isso irá baixar e instalar todas as dependências necessárias.

Exibindo HTML

Vamos agora criar o arquivo principal `main.py`. Este será o ponto de entrada da aplicação.

touch main.py

Abra o arquivo `main.py` com seu editor de código favorito e adicione o seguinte código:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return '<h1>Olá do Flask!</h1>'

No trecho de código acima, importamos a classe `Flask`, a instanciamos passando a variável `__name__`, que armazena o nome do módulo atual, e armazenamos a instância do Flask na variável `app`.

Em seguida, criamos uma função chamada `index` que retorna o HTML que será exibido ao usuário. O decorador `@app.route` transforma uma função regular em uma função de visualização do Flask, convertendo o retorno da função em uma resposta HTML.

Para executar o aplicativo, use o comando:

flask --app main run

A flag `–app` especifica onde a aplicação está, neste caso, em `main.py`. O servidor deve iniciar.

Abra o navegador em http://localhost:5000 ou http://127.0.0.1:5000 e você deverá ver o cabeçalho.

Escrever todo o código HTML no Python não é uma prática recomendada. O ideal é separar o Python do HTML. A próxima seção aborda como servir arquivos HTML separados.

Servindo um arquivo HTML

Nesta seção, vamos criar um código para servir um arquivo `index.html` em nosso site. Primeiro, vamos criar o arquivo `index.html`. Ele será armazenado na pasta `templates`, pois é lá onde o Flask procura os templates HTML.

touch templates/index.html

Abra o arquivo e adicione o seguinte código HTML:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Flask Website</title>
  </head>
  <body>
	<h1>Olá do Flask!</h1>
  </body>
</html>

Agora, abra o arquivo `main.py` e adicione a seguinte importação após a importação do Flask:

from flask import render_template

A função `render_template` permite servir arquivos HTML. Para renderizar um arquivo HTML, modifique a função `index`:

@app.route("/")
def index():
    return render_template('index.html')

Pare o servidor (`Ctrl + C`) e reinicie com:

flask --app main run

Atualize a página no navegador e você deverá ver a mesma página com o HTML sendo servido a partir do arquivo `index.html`.

Neste exemplo, estamos exibindo uma página HTML estática. Com o Flask, você também pode exibir templates, criando arquivos HTML e fornecendo dados. Esses templates usam a sintaxe Jinja. Não vamos abordar isso aqui, mas você pode encontrar bons recursos de aprendizagem do Flask no final deste artigo.

Criando uma Rota de API

Além de exibir conteúdo HTML, as aplicações web também servem dados através de rotas de API. No Flask, é fácil configurar rotas de API. Adicione o seguinte código ao arquivo `main.py` para criar uma rota de API em `/data`.

@app.route('/data')
def data():
    return { "status": "OK", "msg": "Olá da API do Flask" }

Se uma função retornar um dicionário ou lista, o valor será convertido em JSON e enviado como resposta. Reinicie o servidor e acesse http://localhost:5000/data, você deverá ver a resposta em JSON:

Recursos para Aprender Flask

❇️ A Documentação do Flask é um excelente recurso para aprendizado. É bem estruturada, clara e provavelmente o recurso mais confiável para aprender o Flask.

❇️ O freeCodeCamp também tem um ótimo vídeo no YouTube sobre o Flask. freeCodeCamp é uma referência para recursos de aprendizagem gratuitos de alta qualidade.

❇️ Este Curso da Udemy ensina a construir APIs de nível empresarial usando o Flask, abordando ferramentas como Flask-SQLAlchemy e Flask-Smorest.

Conclusão

Este artigo ofereceu uma breve introdução ao Python Flask. Abordamos sua definição, comparamos com outros frameworks e demonstramos a construção de um aplicativo simples. Além disso, apresentamos recursos adicionais para aprofundar o conhecimento.

Em seguida, explore como proteger uma API Flask REST com um token web JSON.