Django 6 do Zero: de APIs REST ao Primeiro Produto Digital
Do Módulo 0 ao Lançamento Comercial: Arquitetura MTV, ORM Avançado, PostgreSQL, DRF, OpenAPI, Async ASGI, Redis, Mocks/pytest, Docker, Deploy VPS, Webhooks e Lançamento de Produto Digital.
Módulo 0 — Preparação e Diagnóstico
Python 3.12+, Terminal, Git, venv, pyproject.toml, Env, PostgreSQL e HTTP/JSON.
Módulo 1 — Fundamentos do Django
Arquitetura MTV, Projeto vs App, Ciclo Req/Res, django-admin e manage.py.
1.1 Arquitetura MTV & Anatomia do Projeto
O Django adota a arquitetura MTV: Model gerencia os dados, Template gerencia a apresentação e View engloba a lógica de negócio.
1.2 Projeto: Primeira Aplicação Django
Crie e registre a aplicação no INSTALLED_APPS de settings.py executando python manage.py startapp core.
Módulo 2 — URLs, Views e Respostas
URLconf, Path Converters, Namespaces, FBVs vs CBVs, JsonResponse e Middlewares.
2.1 Routing & JsonResponse em Views
Defina rotas tipadas como path("pedidos/<int:id>/", view) garantindo conversão automática de parâmetros.
2.2 Projeto: Catálogo Simples com Páginas e Endpoints JSON
Construa views que respondem HTML renderizado para navegação web e JsonResponse para integração com scripts.
Módulo 3 — Templates e Frontend Server-Side
DTL, Herança, Includes, Static Files, CSRF, Mensagens e Paginação.
3.1 Herança de Templates DTL & Proteção CSRF
Crie layout base com blocos substituíveis ({% block content %}) e obrigue a inclusão da tag CSRF em todos os formulários POST.
3.2 Projeto: Interface Web do Catálogo
Monte as páginas do catálogo com paginação por Django Paginator e exibição de mensagens com django.contrib.messages.
Módulo 4 — Models e ORM
Fields, Relacionamentos (FK, O2O, M2M), QuerySets, Q & F objetos e Agregações.
4.1 Consultas Avançadas com Q, F & Agregações
F() permite referenciar colunas do banco na própria query sem carregar em memória (ex: F("estoque") - 1). Q() habilita lógica OR/AND complexa.
4.2 Projeto: Modelagem de Clientes, Produtos e Pedidos
Declare as classes Cliente, Produto e Pedido com validações de integridade e métodos de domínio no model.
Módulo 5 — Migrations e Evolução do Banco
Schema & Data Migrations, RunPython, Dependências, Rollbacks e Zero-Downtime.
5.1 Migrações de Dados com RunPython
Ao remover ou alterar colunas com dados reais, insira uma migração customizada com RunPython para mover a informação antes do RemoveField.
5.2 Projeto: Evolução Segura do Modelo de Pedidos
Crie migrações reversíveis testando a aplicação dos comandos makemigrations e migrate antes de enviar ao repositório.
Módulo 6 — PostgreSQL e Transações
transaction.atomic, select_for_update, N+1 Queries, select_related e prefetch_related.
6.1 Otimização ORM (select_related) & Trava de Linha (select_for_update)
select_related realiza JOIN em ForeignKeys O(1). select_for_update trava as linhas no PostgreSQL até o fim de transaction.atomic().
6.2 Projeto: Reserva de Estoque Protegida contra Concorrência
Implemente a função de reserva utilizando transaction.atomic e select_for_update para impdir venda duplicada.
Módulo 7 — Django Admin Profissional
ModelAdmin, Search, Filters, Fieldsets, Inlines, Admin Actions e Permissões.
7.1 Customização de ModelAdmin & Ações em Lote
Configure search_fields, list_filter, TabularInline e actions customizadas para operações em massa no Django Admin.
7.2 Projeto: Painel Operacional de Pedidos
Organize a exibição do modelo de Pedidos com status coloridos, inlines de itens e permissões restritas aos operadores.
Módulo 8 — Formulários e Validação
Form, ModelForm, clean(), Formsets, Uploads de Imagens e Prevenção de Mass Assignment.
8.1 Validação de Domínio no método clean()
Sobrescreva o método clean() do ModelForm para validar regras de negócio que dependem da combinação de múltiplos campos.
8.2 Projeto: Cadastro Seguro de Produtos e Demandas
Implemente formulário de upload de imagens limitando extensão e tamanho com reprocessamento via Pillow em otimizar_imagem().
Módulo 9 — Usuários, Autenticação e Autorização
Custom User Model, Passwords, Sessões, Groups, Permissões, RBAC e Ownership.
9.1 Custom User Model (PerfilUsuario) & RBAC
Sempre estenda AbstractUser na criação do projeto antes das migrações iniciais para permitir customizações sem quebrar o banco.
9.2 Projeto: Papéis de Cliente, Operador e Administrador
Implemente verificações de permissão garantindo que cada cliente só acesse seus próprios pedidos no sistema.
Módulo 10 — Fundamentos de APIs RESTful
Recursos, Endpoints, Verbos HTTP, Status Codes, Idempotência e JSON.
10.1 Desenho de Contratos RESTful & Semântica
Mapeie URIs no plural (/api/v1/pedidos/) utilizando verbos HTTP adequados e respostas de erro estruturadas.
10.2 Projeto: Desenhar o Contrato da API de Pedidos
Especifique contratos JSON de pedidos cobrindo criação (201), leitura (200), alteração (200) e exclusão (204).
Módulo 11 — Django REST Framework (DRF)
Serializers, ModelSerializer, APIView, Generic Views, ViewSets e Routers.
11.1 ModelSerializer, ViewSets & Routers
Combine ModelViewSet e DefaultRouter para expor endpoints CRUD completos com validação automática via Serializer.
11.2 Projeto: CRUD REST de Produtos e Pedidos
Desenvolva a suíte de ViewSets e Serializers para catálogo e gerenciamento de pedidos com suporte a Browsable API.
Módulo 12 — Design Profissional da API
Serializers de Entrada/Saída, DTOs, Paginação Cursor, Idempotency e Versionamento.
12.1 Paginação por Cursor & Idempotency Keys
Utilize serializers distintos para leitura (detalhado) e escrita (sanitizado), adicionando paginação por cursor em listagens massivas.
12.2 Projeto: API Pública Versionada em /api/v1/
Estruture os URLs sob a versão /api/v1/ garantindo evolução sem quebrar clientes legados.
Módulo 13 — Segurança de APIs (OWASP Top 10)
OWASP API Security, BOLA, Permissões no DRF, Rate Limiting e CSRF/CORS.
13.1 Prevenção contra BOLA no DRF (get_queryset)
Sobrescreva get_queryset() no ViewSet para limitar os resultados apenas aos registros pertencentes ao request.user autenticado.
13.2 Projeto: Threat Model e Hardening da API
Aplique middlewares de rate-limiting (django-ratelimit), suporte CORS restrito e verificação rigorosa de objetos.
Módulo 14 — Documentação OpenAPI
OpenAPI 3, drf-spectacular, Swagger UI, ReDoc e Schemas de Autenticação.
14.1 Gerando OpenAPI com drf-spectacular
Utilize drf-spectacular para gerar automaticamente a especificação OpenAPI 3.0 refletindo os tipos dos Serializers e ViewSets.
14.2 Projeto: Documentação Interativa da API (Swagger/ReDoc)
Exponha o painel Swagger UI com suporte interativo a testes de endpoints e esquemas de autenticação.
Módulo 15 — Arquitetura Modular (Monólito Modular)
Services, Repositories, Domain, Dependency Inversion, Signals e Clean Architecture.
15.1 Desacoplando Regras de Negócio em Services
Isole regras complexas de negócio em módulos de serviço (services.py) deixando as Views focadas apenas no protocolo HTTP.
15.2 Projeto: Refatoração por Módulos de Negócio (src/orders/domain)
Organize a aplicação Django em pacotes orientados ao domínio (api, application, domain, models, tests).
Módulo 16 — Assincronismo no Django 6
WSGI vs ASGI, Async Views, Async ORM, sync_to_async e Concorrência.
16.1 Async Views, ASGI & database_sync_to_async
Escreva async def views para chamadas HTTP I/O concorrentes utilizando database_sync_to_async para consultas ORM seguras.
16.2 Projeto: Integração Concorrente com Serviços Externos
Desenvolva view assíncrona que consome múltiplas APIs de frete em paralelo sob protocolo ASGI.
Módulo 17 — Tarefas em Background
Workers, Celery/Redis, Retries, Outbox Pattern e Management Commands.
17.1 Custom Management Commands & Celery Workers
Crie comandos python manage.py customizados e delegue tarefas de envio de email e geração de relatórios a workers assíncronos.
17.2 Projeto: Envio Assíncrono de Notificações e Relatórios
Implemente worker assíncrono para notificação de mudanças de status de pedidos com retentativas automáticas.
Módulo 18 — Cache e Redis
Cache de View, Fragment Cache, Redis, Rate Limiting e Distributed Locks.
18.1 Redis Backend, View Caching & Invalidação
Utilize o decorator @cache_page ou a API de low-level cache (cache.set/get) para armazenar фрагmentos e resultados de consultas pesadas.
18.2 Projeto: Otimização de Consultas Comprovadamente Lentas
Configure invalidação de cache no save() de produtos garantindo que atualizações reflitam instantaneamente na API.
Módulo 19 — Testes Automatizados
TestCase vs TransactionTestCase, APIClient, Fixtures, Mocks e Cobertura.
19.1 Django TestCase & Testing Helpers Antispam
Utilize TestCase para rollback automático entre testes e TransactionTestCase para suítes que testam consumers Django Channels.
19.2 Projeto: Suíte Automatizada do Produto
Escreva testes cobrindo autenticação, permissões RBAC, criação de pedidos e resiliência de formulários com antispam_ok().
Módulo 20 — Qualidade e Manutenção
Ruff Linter, Formatação, Type Hints, Pre-commit e Conventional Commits.
20.1 Ruff, Linting de Alta Performance & Pre-commit
Configure Ruff para verificação de estilo de código ultra-rápida e hooks de pre-commit para evitar commits que quebrem as diretrizes.
20.2 Projeto: Pipeline Local de Qualidade
Crie scripts locais que rodam ruff check, mypy e python manage.py test antes de cada git push.
Módulo 21 — Observabilidade
Logs Estruturados, OpenTelemetry, Health Checks (live/ready) e Dashboard.
21.1 Endpoints de Saúde (/health/live e /health/ready)
Implemente endpoints de monitoria verificando integridade das conexões com MySQL e Redis para orquestradores.
21.2 Projeto: Painel de Saúde Técnica e Operacional
Exiba estatísticas de leads, relatórios de compras e métricas de cache no painel de monitoria protegido.
Módulo 22 — Docker e Ambientes
Dockerfile, Multi-stage build, Docker Compose, Nginx, Daphne, MySQL e Redis.
22.1 Dockerfile Multi-Stage & docker-compose.yml
Utilize a sintaxe ${VAR:?mensagem} no docker-compose.yml para impedir a inicialização dos contêineres caso segredos faltem.
22.2 Projeto: Ambiente Completo Containerizado
Configure a stack Docker unindo Nginx (porta 80), Web (Daphne/ASGI), MySQL 8 e Redis com redes isoladas.
Módulo 23 — Deploy Seguro
Checklist oficial de deploy, DEBUG=False, ALLOWED_HOSTS, Nginx, SSL Cloudflare e VPS.
23.1 Checklist Oficial de Deploy Django & SSL Full Strict
Configure o servidor Ubuntu 24.04 na Contabo atrás do Cloudflare em modo Full (strict) SSL com collectstatic e migrações executadas.
23.2 Projeto: Deploy em VPS com HTTPS e Backup Testado
Execute git pull, docker compose build web, docker compose up -d e rotina de backup do banco de dados MySQL.
Módulo 24 — Produto Digital e Validação
Jobs to Be Done, Proposta de Valor, MVP, Métrica de Ativação e Entrevistas.
24.1 Definição de MVP & Métrica de Ativação
Defina a métrica primária de ativação do produto e estruture o MVP focado estritamente na dor validada do cliente.
24.2 Entrega: Documento de Validação do Produto
Construa o documento estratégico contendo persona, proposta de valor, precificação e critérios de retenção inicial.
Módulo 25 — Pagamentos e Assinatura
Checkout, Kiwify Webhooks, Assinatura HMAC, Idempotência e Auditoria Financeira.
25.1 Webhooks de Pagamento Idempotentes (Kiwify)
Exija a presença do token Kiwify e utilize hmac.compare_digest para prevenir ataques de falsificação de requisições de pagamento.
25.2 Projeto: Cobrança Real ou Simulada com Webhook Seguro
Implemente a view webhook_kiwify salvando registros na tabela Compra com get_or_create na coluna referencia_externa.
Módulo 26 — SaaS e Multi-Tenancy
Single-tenant vs Multi-tenant, Tenant por Linha/Schema/DB, Feature Flags e Limits.
26.1 Arquitetura Multi-Tenant Pragmática
Prepare o sistema para multi-tenancy adicionando FK de Tenant nos modelos essenciais com autorização em cada consulta.
Módulo 27 — Projeto Final: Lançamento do Produto Digital
Construção e Lançamento do Produto Digital de Operações Logísticas integrando os 27 módulos anteriores.
27.1 Projeto Final: Produto Digital de Operações Logísticas
Aprenda lançamento comercial do produto digital com conceitos práticos e exercícios aplicados.