Sistema Web com Python

python
3 – Web
3.1 – Backend (servidor)
3.2 – Frontend (transpilado)
3.3 – APIs
3.4 – Templates (Jinja2, Django Templates)
3.1.1 – Sincrono (Django, Flask, FastAPI)
3.1.2 – Assincrono (FastAPI, Sanic, Aiohttp)
3.1.3 – WebSockets (Socket.IO, WebSockets)
3.2.1 – PyScript (roda Python no navegador)
3.2.2 – Brython
3.2.3 – Transcrypt
3.3.1 – REST (requests, Django REST Framework)
3.3.2 – GraphQL (Graphene)
LEGENDA
Nivel_1
Nivel_2
Nivel_3

Um sistema web roda em um servidor remoto. O usuário acessa via navegador com requisições HTTP. Python é excelente para construir o back-end desses sistemas. Existem frameworks maduros como Django e Flask. Cada um atende a diferentes necessidades de projeto. Django entrega uma estrutura completa e pronta. Flask oferece simplicidade e controle direto. A escolha depende da complexidade esperada. Sistemas pequenos se beneficiam da leveza do Flask. Grandes portais corporativos usam Django pela segurança. Esta decisão impacta todo o ciclo de vida do software.

Rotas, views e templates organizados

Uma rota associa uma URL a uma função chamada view. A view processa a requisição e retorna uma resposta. Respostas comuns incluem HTML, JSON ou redirecionamentos. O Flask usa decoradores para declarar rotas facilmente. Exemplo: @app.route('/contato') define o endereço. Parâmetros dinâmicos vêm da própria URL. /usuario/ captura um número como argumento. Templates separam a apresentação da lógica de negócio. O Jinja2 insere dados com {{ variavel }}. Estruturas condicionais usam {% if %} dentro do template. Isso mantém o código Python limpo e focado. Um exemplo funcional mínimo é mostrado abaixo.

Salve o código como webapp.py. Crie uma pasta templates com index.html. Execute com Python e acesse http://localhost:5000. O servidor de desenvolvimento é ótimo para testes locais. Nunca o use diretamente em produção, pois é inseguro.

Banco de dados e modelos ORM

Sistemas web precisam armazenar dados persistentemente. Bancos como SQLite, PostgreSQL ou MySQL resolvem isso. O SQLAlchemy é o ORM mais popular do ecossistema Python. Ele converte classes Python em tabelas de banco relacional. Cada atributo de classe vira uma coluna na tabela. Operações como inserir ou buscar usam métodos simples. Exemplo: db.session.add(objeto) prepara a inserção. db.session.commit() confirma a transação no banco. Consultas usam a sintaxe Modelo.query.filter_by(). Isso elimina SQL escrito manualmente, prevenindo injeção. A configuração inicial exige apenas a URI do banco. Veja um modelo concreto de usuário com SQLAlchemy.

Esse padrão funciona para qualquer sistema web. A camada de dados fica desacoplada do resto da aplicação. Testes se tornam mais fáceis com um banco em memória. Para produção, troque a URI para PostgreSQL ou similar.

Autenticação e implantação final

Autenticação restringe acesso a certas áreas do sistema. O Django já entrega esse mecanismo de fábrica. No Flask, a extensão Flask-Login é a mais adotada. Senhas nunca são armazenadas em texto puro. Use bcrypt para gerar hashes seguros e salgados. A fórmula de hash é \(H = \text{bcrypt}(senha + salt)\). Cookies de sessão recebem assinatura criptográfica. Isso impede que usuários forjem sua identidade. Após pronta, a aplicação precisa ser publicada na internet. Plataformas como Render, PythonAnywhere ou DigitalOcean funcionam. Gere um arquivo requirements.txt com pip freeze. Configure um servidor WSGI como Gunicorn no ambiente final. Variáveis sensíveis (chaves, senhas) ficam em variáveis de ambiente. Nunca as escreva diretamente no código-fonte. Com esses passos, seu sistema web estará seguro e funcional.

XML vs API

xml consumida pelo html

Qual a melhor opção para o seu projeto?

Quando precisamos obter dados externos em uma página HTML, duas abordagens comuns são ler arquivos XML ou consumir APIs diretamente. Cada uma tem suas vantagens, desvantagens e casos de uso ideais.

Comparação Direta

Ler XML

Envolve carregar um arquivo XML estático e processar seu conteúdo usando JavaScript.

Características:

  • Dados estáticos e pré-formatados
  • Processamento no lado do cliente
  • Atualização manual do arquivo
  • Estrutura hierárquica definida

Vantagens

  • Simplicidade de implementação
  • Não depende de servidores externos
  • Controle total sobre a estrutura de dados
  • Performance consistente

Desvantagens

  • Dados estáticos (não atualizam automaticamente)
  • Escalabilidade limitada
  • Necessidade de reprocessar o arquivo para atualizações
  • Problemas com arquivos muito grandes

Consumir API

Envolve fazer requisições HTTP para endpoints que retornam dados dinâmicos, normalmente em formato JSON.

Características:

  • Dados dinâmicos e atualizados
  • Processamento no servidor
  • Atualização automática
  • Funcionalidades complexas no backend

Vantagens

  • Dados sempre atualizados
  • Maior escalabilidade
  • Funcionalidades complexas no backend
  • Melhor para aplicações interativas

Desvantagens

  • Dependência de servidores externos
  • Problemas de CORS em browsers
  • Maior complexidade de implementação
  • Possíveis custos com APIs externas

Quando usar cada abordagem?

Use XML quando:

  • Seus dados mudam pouco ou são estáticos
  • Você precisa de simplicidade e controle total
  • Não quer depender de servidores externos
  • Seu projeto é pequeno e com orçamento limitado
  • Você está trabalhando localmente ou offline

Use API quando:

  • Seus dados mudam frequentemente
  • Você precisa de dados em tempo real
  • Seu projeto precisa escalar
  • Você consome dados de serviços externos
  • Seu aplicativo é interativo e dinâmico

Conclusão

Não existe uma resposta única para todas as situações. A escolha entre XML e API depende das necessidades específicas do seu projeto:

  • XML é melhor para dados estáticos, projetos simples e quando você quer evitar dependências externas.
  • API é melhor para dados dinâmicos, aplicações em tempo real e quando você precisa de escalabilidade.

Para a maioria dos projetos modernos, consumir APIs é a abordagem recomendada devido à natureza dinâmica dos dados atuais. No entanto, entender ambas as técnicas permitirá que você tome a decisão correta para cada situação.

 

Exemplo: