Home > Blog > Python
Python
Programação

O que é Flask? Guia Prático com Python e API

Atualizado em: 14 de julho de 2026

foto escrito 'o que é Flask' com a logo do Flask no meio da imagem

Flask é um framework web leve para Python usado na criação de sites, APIs e serviços de back-end. Ele fornece recursos essenciais, como roteamento de URLs, tratamento de requisições, respostas HTTP e templates, mas deixa o desenvolvedor escolher bibliotecas para banco de dados, autenticação e outras funções.

O termo microframework não significa que o Flask serve apenas para projetos pequenos. Significa que o núcleo é enxuto e extensível. Uma aplicação pode começar com poucas linhas e crescer com uma estrutura modular, testes, banco de dados e serviços separados.

Resposta rápida: Flask é uma boa escolha para aprender desenvolvimento web com Python, construir APIs, protótipos, painéis internos e aplicações nas quais a equipe deseja controlar a arquitetura. Para projetos que precisam de administração, ORM e autenticação prontos, Django pode reduzir o trabalho inicial.

Como o Flask funciona?

Uma aplicação Flask recebe uma requisição HTTP, identifica a rota correspondente, executa uma função Python e transforma o retorno dessa função em uma resposta para o navegador ou para outro sistema.

ComponenteFunção
FlaskOrganiza a aplicação, rotas, requisições e respostas
WerkzeugFornece a base WSGI e utilitários HTTP
JinjaRenderiza templates HTML com dados dinâmicos
ExtensõesAdicionam banco de dados, login, migrações e outros recursos

O Flask procura templates na pasta templates e arquivos CSS, JavaScript e imagens na pasta static. Essa convenção reduz configurações e mantém o projeto organizado.

Quando usar Flask?

  • APIs REST e serviços de back-end;
  • aplicações pequenas ou médias com arquitetura personalizada;
  • protótipos e provas de conceito;
  • painéis internos e ferramentas administrativas simples;
  • projetos educacionais para aprender requisições, rotas e templates.

Para sistemas grandes, o Flask continua sendo uma opção possível, mas exige decisões conscientes sobre estrutura, dependências, autenticação, tarefas assíncronas, monitoramento e implantação.

Como instalar Flask em um ambiente virtual

Antes de começar, tenha uma versão atual e compatível do Python instalada. O uso de um ambiente virtual evita que as bibliotecas de um projeto interfiram em outros.

# Windows
py -m venv .venv
.venv\Scripts\activate

# macOS e Linux
python3 -m venv .venv
source .venv/bin/activate

Com o ambiente ativado, instale o Flask:

python -m pip install Flask

O formato python -m pip ajuda a garantir que o pacote seja instalado no interpretador ativo. Para configurar o editor, consulte também como instalar Python no VSCode.

Crie a primeira aplicação Flask

Crie um arquivo chamado app.py:

from flask import Flask

app = Flask(__name__)

@app.get("/")
def inicio():
    return "Olá! O Flask está funcionando."

Inicie o servidor de desenvolvimento:

flask --app app run --debug

Abra http://127.0.0.1:5000. Como o arquivo se chama app.py, versões atuais do Flask também conseguem descobri-lo automaticamente em muitos casos.

Atenção: o servidor embutido e o depurador são destinados ao desenvolvimento local. O modo debug permite executar código pelo navegador em determinadas situações e não deve ficar ativo em produção.

Rotas e parâmetros de URL

O decorador de rota associa uma URL a uma função. Também é possível receber valores diretamente no caminho:

from markupsafe import escape

@app.get("/usuario/<nome>")
def usuario(nome):
    return f"Perfil de {escape(nome)}"

@app.get("/produto/<int:produto_id>")
def produto(produto_id):
    return f"Produto número {produto_id}"

O uso de escape() impede que texto enviado pelo visitante seja interpretado diretamente como HTML. Templates Jinja com extensão HTML também aplicam escape automático por padrão.

Como criar uma API JSON com Flask

Quando uma rota retorna um dicionário ou uma lista compatível, o Flask cria uma resposta JSON automaticamente:

@app.get("/api/cursos")
def listar_cursos():
    return [
        {"id": 1, "nome": "Python"},
        {"id": 2, "nome": "Flask"}
    ]

Ao acessar /api/cursos, o navegador recebe dados em JSON. Em uma aplicação real, essa lista normalmente viria de um banco de dados e teria validação, autenticação, paginação e tratamento de erros. Entenda também o que é uma API RESTful.

Templates HTML com Jinja

Crie a estrutura abaixo:

meu-projeto/
├── app.py
├── templates/
│   └── inicio.html
└── static/
    └── style.css

No app.py, renderize o template e envie uma variável:

from flask import Flask, render_template

app = Flask(__name__)

@app.get("/")
def inicio():
    return render_template("inicio.html", titulo="Meu site Flask")

Conteúdo de templates/inicio.html:

<!doctype html>
<html lang="pt-BR">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>{{ titulo }}</title>
    <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
</head>
<body>
    <h1>{{ titulo }}</h1>
    <p>Página renderizada pelo Jinja.</p>
</body>
</html>

Use url_for() em vez de escrever caminhos fixos. Isso facilita mudanças futuras e gera URLs corretas mesmo quando a aplicação não está na raiz do domínio.

Página 404 personalizada

@app.errorhandler(404)
def pagina_nao_encontrada(erro):
    return render_template("404.html"), 404

O número 404 após o template é importante. Sem ele, o navegador receberia uma resposta de sucesso 200, mesmo exibindo uma página de erro.

Flask, Django ou FastAPI?

TecnologiaMelhor encaixeO que vem pronto
FlaskSites, APIs e serviços com arquitetura personalizadaRotas, requisições, respostas, templates e extensibilidade
DjangoSistemas completos com muitos recursos administrativosORM, painel administrativo, autenticação, formulários e estrutura definida
FastAPIAPIs tipadas, documentação automática e aplicações assíncronasValidação baseada em tipos, OpenAPI e recursos modernos para APIs

Não existe vencedor universal. A escolha depende dos requisitos e da experiência da equipe. Veja uma comparação mais detalhada em Django vs Flask.

Banco de dados e extensões

O Flask não inclui um ORM obrigatório. É possível usar SQLAlchemy diretamente ou por meio de extensões, além de bibliotecas para login, migrações, formulários e proteção contra CSRF.

  • Flask-SQLAlchemy: integração comum com SQLAlchemy;
  • Flask-Migrate: migrações de esquema com Alembic;
  • Flask-Login: gerenciamento de sessão de usuários;
  • Flask-WTF: formulários e proteção CSRF.

Antes de instalar uma extensão, confira manutenção, documentação, compatibilidade e necessidade real. Menos dependências reduzem a superfície de atualização e segurança.

Como publicar uma aplicação Flask

Em produção, execute a aplicação com um servidor WSGI adequado, como Gunicorn em sistemas compatíveis ou Waitress em diferentes plataformas. Normalmente, esse servidor fica atrás de um proxy reverso ou de uma plataforma de hospedagem.

# Exemplo com Waitress
python -m pip install waitress
waitress-serve --call app:app

A configuração exata depende de como a aplicação foi criada. Também é necessário proteger segredos com variáveis de ambiente, configurar logs, HTTPS, banco de dados, backups e monitoramento. Para empacotar aplicações, veja o que é Docker.

Erros comuns ao começar

  • Nomear o arquivo como flask.py: isso entra em conflito com o pacote instalado;
  • instalar no Python errado: use python -m pip dentro da .venv;
  • deixar debug ativo em produção: o depurador representa um risco de segurança;
  • construir HTML por concatenação: prefira templates e escape de dados;
  • guardar senhas no código: use variáveis de ambiente e um gerenciador de segredos;
  • colocar toda a aplicação em um arquivo: divida rotas e serviços conforme o projeto cresce.

Perguntas frequentes

Flask é front-end ou back-end?

Flask é usado principalmente no back-end. Ele pode renderizar HTML no servidor ou fornecer uma API para um front-end criado com JavaScript, React, Vue ou outra tecnologia.

Flask serve para criar API?

Sim. Rotas podem retornar dicionários e listas em JSON, receber diferentes métodos HTTP e ser complementadas com validação e autenticação.

Preciso saber HTML para usar Flask?

Para criar páginas renderizadas, é importante conhecer HTML e CSS. Para APIs sem interface própria, o foco inicial pode ficar em Python, HTTP e JSON.

Flask é seguro?

O núcleo fornece recursos seguros quando usados corretamente, como escape em templates. A segurança final depende da configuração, das extensões, da validação de entrada, da autenticação, das atualizações e da implantação.

Fontes e verificação

Conteúdo revisado em 14 de julho de 2026 com base na documentação Quickstart do Flask 3.1, no guia oficial de implantação em produção e na documentação do Python sobre ambientes virtuais.

Conclusão

Flask oferece uma base pequena e flexível para desenvolvimento web com Python. Ele permite aprender os fundamentos de rotas, HTTP, templates e APIs sem esconder todas as decisões arquiteturais.

Comece com uma aplicação simples, use ambiente virtual, organize templates e arquivos estáticos e adicione dependências somente quando houver uma necessidade clara. Essa abordagem mantém o projeto compreensível e facilita sua evolução.

5 Melhores Cursos de Python em 2026: Comparativo Completo

Confira os melhores cursos de Python de 2026, com opções para iniciantes e avançados, e aprenda a programar de forma eficiente

POSTS RELACIONADOS

Ver todos

Seta para a direita