Python para Web: Flask, Django e Aplicações Práticas

Python se consolidou como uma das linguagens mais versáteis para desenvolvimento web. Com frameworks maduros como Flask e Django, é possível criar desde APIs simples até aplicações corporativas complexas. Neste guia completo, você vai aprender os fundamentos de cada framework, como construir APIs REST, integrar bancos de dados e colocar sua aplicação no ar.

1. Introdução ao Flask: rotas, templates e sessões

Flask é um microframework em Python que oferece o essencial para começar uma aplicação web. Sua filosofia minimalista permite que você adicione apenas os componentes necessários, tornando o aprendizado mais direto.

Rotas no Flask

Uma rota é um decorador que associa uma URL a uma função. Veja o exemplo mais simples:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def home():
    return '<h1>Olá, Flask!</h1>'

if __name__ == '__main__':
    app.run(debug=True)

Ao acessar http://127.0.0.1:5000/, a função home é executada e retorna o HTML. Você pode criar rotas dinâmicas usando <variavel> no caminho.

Templates com Jinja2

Flask utiliza o motor de templates Jinja2 para separar a lógica da apresentação. Crie um arquivo templates/index.html e renderize com variáveis:

from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def home():
    return render_template('index.html', nome='Mundo')
<!-- templates/index.html -->
<!DOCTYPE html>
<html>
<head><title>Flask App</title></head>
<body>
  <h1>Olá, {{ nome }}!</h1>
</body>
</html>

Jinja2 suporta condicionais, laços e herança de templates, permitindo criar páginas dinâmicas com facilidade.

Sessões

Para manter dados entre requisições, o Flask oferece sessões baseadas em cookies assinados. Exemplo:

from flask import Flask, session, redirect, url_for, request
app = Flask(__name__)
app.secret_key = 'sua-chave-secreta'

@app.route('/login')
def login():
    session['usuario'] = request.args.get('nome')
    return redirect(url_for('home'))

@app.route('/')
def home():
    if 'usuario' in session:
        return f'Logado como {session["usuario"]}'
    return 'Você não está logado.'

2. Introdução ao Django: MVT, Admin e ORM

Django é um framework completo que segue o padrão Model-View-Template (MVT). Ele inclui baterias como ORM, painel admin e autenticação, acelerando o desenvolvimento de aplicações mais robustas.

Estrutura MVT

No Django, o Model representa os dados, a View contém a lógica de negócio (similar ao controller), e o Template é a apresentação. Exemplo de um model:

from django.db import models

class Produto(models.Model):
    nome = models.CharField(max_length=100)
    preco = models.DecimalField(max_digits=8, decimal_places=2)
    estoque = models.IntegerField(default=0)
    
    def __str__(self):
        return self.nome

Painel Admin

Uma das grandes vantagens do Django é o admin automático. Basta registrar o model no admin.py:

from django.contrib import admin
from .models import Produto

admin.site.register(Produto)

Assim você ganha uma interface completa para gerenciar os dados da aplicação sem escrever uma linha de HTML.

ORM (Object-Relational Mapping)

O ORM do Django permite trabalhar com banco de dados usando Python puro. Exemplos:

# Criar um produto
produto = Produto(nome='Curso de Python', preco=97.00, estoque=10)
produto.save()

# Buscar todos os produtos com preco maior que 50
Produto.objects.filter(preco__gt=50)

# Atualizar
produto.preco = 87.00
produto.save()

3. Flask vs Django: qual escolher?

A escolha entre Flask e Django depende do tamanho e complexidade do seu projeto. Veja uma comparação direta:

CaracterísticaFlaskDjango
Tamanho do frameworkMicro, leveCompleto, pesado
Curva de aprendizadoSuaveModerada a alta
ORM integradoNão (usa extensões)Sim (poderoso)
Admin automáticoNãoSim
FlexibilidadeAlta (escolha seus componentes)Média (convenção sobre configuração)
Ideal paraAPIs, microsserviços, protótiposAplicações grandes, portais, e-commerce

Se você prefere um framework mais leve e deseja liberdade de escolha, Flask é uma excelente opção. Se precisa de uma solução all-in-one com recursos nativos, Django é mais produtivo em projetos maiores.

No ecossistema brasileiro, ambos têm forte adoção. Para quem está migrando do PHP, vale a pena conferir também nosso comparativo de PHP e Laravel.

4. Construção de API REST com Python

APIs REST são fundamentais para comunicação entre sistemas. Python oferece ferramentas excelentes para criá-las, tanto com Flask quanto com Django REST Framework (DRF).

API com Flask

from flask import Flask, jsonify, request
app = Flask(__name__)

produtos = [{'id': 1, 'nome': 'Notebook', 'preco': 3500.00}]

@app.route('/api/produtos', methods=['GET'])
def listar():
    return jsonify(produtos)

@app.route('/api/produtos', methods=['POST'])
def criar():
    data = request.get_json()
    novo = {'id': len(produtos)+1, **data}
    produtos.append(novo)
    return jsonify(novo), 201

API com Django REST Framework

# serializers.py
from rest_framework import serializers
from .models import Produto

class ProdutoSerializer(serializers.ModelSerializer):
    class Meta:
        model = Produto
        fields = '__all__'

# views.py
from rest_framework import viewsets
from .models import Produto
from .serializers import ProdutoSerializer

class ProdutoViewSet(viewsets.ModelViewSet):
    queryset = Produto.objects.all()
    serializer_class = ProdutoSerializer

O DRF fornece viewsets, serializers e autenticação prontos, agilizando a criação de APIs completas com pouco código.

5. Integração com banco de dados

Seja com Flask ou Django, a integração com banco de dados é essencial. Enquanto o Django já vem com ORM próprio, no Flask você pode usar SQLAlchemy, a biblioteca mais popular para mapeamento objeto-relacional em Python.

Flask + SQLAlchemy

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///meuapp.db'
db = SQLAlchemy(app)

class Usuario(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    nome = db.Column(db.String(80), nullable=False)
    email = db.Column(db.String(120), unique=True)

    def __repr__(self):
        return f'<Usuario {self.nome}>'

Com o SQLAlchemy, você pode migrar entre SQLite, PostgreSQL, MySQL e outros sem alterar o código da aplicação.

Lembre-se de ter uma base sólida em HTML e CSS e JavaScript moderno para construir o front-end que consome essas APIs.

6. Deploy básico de aplicações Python

Colocar sua aplicação no ar é o próximo passo. Existem diversas opções gratuitas e pagas para hospedar apps Python:

  • Heroku: antigo favorito, mas com plano gratuito descontinuado. Ainda funcional para testes com cartão de crédito.
  • PythonAnywhere: ideal para iniciantes, oferece um plano gratuito com domínio próprio.
  • Railway / Render: plataformas modernas com suporte nativo a Python, banco de dados integrado e deploy contínuo via Git.
  • VPS (DigitalOcean, Linode): para maior controle, você pode configurar um servidor Nginx + Gunicorn + supervisor.

Um exemplo básico de deploy usando Gunicorn e Nginx em uma VPS:

# Instalar dependências
pip install gunicorn

# Rodar a aplicação Flask
gunicorn -w 4 app:app

# Configurar Nginx como proxy reverso
# server { listen 80; location / { proxy_pass http://127.0.0.1:8000; } }

Para Django, o processo é similar, mas com coleta de arquivos estáticos e configuração de ALLOWED_HOSTS.

Perguntas Frequentes (FAQ)

Python é bom para desenvolvimento web?

Sim, Python é excelente para web, especialmente com frameworks como Flask e Django que abstraem grande parte da complexidade e permitem desenvolvimento rápido.

Devo aprender Flask ou Django primeiro?

Se você está começando, Flask é mais simples e permite entender os fundamentos. Django é mais indicado quando você já conhece o básico e quer construir algo maior.

Qual banco de dados usar com Python?

Os mais comuns são PostgreSQL (recomendado para produção) e SQLite (para desenvolvimento/pequenos projetos). MySQL também é suportado via ORM.

Preciso saber JavaScript para desenvolver com Python web?

Depende. Se for construir uma API e um front-end separado, sim, é importante ter conhecimentos de JavaScript moderno e consumo de APIs REST.

Onde posso aprender mais?

Explore nossa seção de todas as tecnologias e também os estudos de programação com exercícios práticos.

Conclusão

Python para web é um campo vasto e cheio de oportunidades. Tanto Flask quanto Django são ferramentas poderosas que atendem a diferentes necessidades. Dominar rotas, templates, ORM, APIs REST e deploy vai permitir que você construa desde landing pages simples até sistemas corporativos completos.

Se você precisa de ajuda para desenvolver seu projeto Python, entre em contato pelo WhatsApp para solicitar um orçamento personalizado. Estou à disposição para transformar suas ideias em realidade digital.

Solicitar orçamento Bônus de boas-vindas até R$1.500