Como usar HTML de forma estratégica, não como gambiarra
Se você já criou um blog em Django, sabe o problema.
Funciona, mas cresce rápido e vira bagunça.
HTML repetido.
SEO improvisado.
Templates cheios de lógica.
Na prática, o erro não está no Django.
Está na forma como usamos HTML sem arquitetura.
Neste artigo, vou te mostrar como pensar templates Django como sistema, não como arquivos soltos.
Tudo aqui eu já usei em projetos reais.
Testei, quebrei, refatorei e funcionou assim.
Por que HTML é arquitetura em Django

Muita gente trata template como “só HTML”.
Isso é o primeiro erro.
No Django, o template é a camada de apresentação.
Ele conversa com SEO, acessibilidade e UX.
Portanto, um HTML mal estruturado gera:
-
Código difícil de manter
-
SEO fraco
-
Layouts engessados
-
Retrabalho constante
Enquanto isso, um HTML bem arquitetado vira base para crescer.
Fundação: Herança de Templates
Tudo começa aqui:
Esse comando define uma regra simples e poderosa.
O que vai no base.html
-
<html>, <head>, <body>
-
Header global
-
Footer
-
Scripts e CSS
-
Blocos reutilizáveis
O template filho nunca repete estrutura global.
Regra de ouro:
Se você vê <html> em mais de um template, a arquitetura está errada.
Isso separa responsabilidades.
O base cuida da estrutura.
Os filhos cuidam do conteúdo.
SEO Profissional com Blocos Semânticos
SEO não é plugin.
É HTML bem usado.
No base.html, defina blocos:
No template da home:
Por que isso funciona
Insight real:
SEO estático bem feito é melhor que SEO dinâmico mal feito.
Componentização com {% include %}
Agora entramos no ponto que separa tutorial de projeto real.
Isso não é “organização”.
É arquitetura de UI.
Quando virar um include?
Sempre que um bloco visual tiver identidade própria.
Exemplos reais:
-
Hero
-
Grid de posts
-
Card de artigo
-
Paginação
Benefícios diretos:
Na prática, isso reduz bugs e acelera mudanças.
Controle de Fluxo Defensivo
Nunca assuma que haverá conteúdo.
Esse detalhe evita erro em produção.
Anti-pattern clássico:
Isso dispara query desnecessária.
Eu já vi isso virar gargalo real.
Template bom é defensivo.
HTML Semântico e Acessibilidade
Aqui entra o HTML de verdade.
Isso não é frescura.
-
Leitores de tela entendem a página
-
Google entende hierarquia
-
Código fica autoexplicativo
Insight prático:
Acessibilidade não é extra.
É arquitetura.
Use <header> do jeito certo
Dentro da section:
Por que não uma <div>?
Porque header descreve o conteúdo da section.
HTML semântico melhora:
-
SEO
-
Leitura por máquinas
-
Manutenção do código
Regra simples que sigo:
Se existe tag semântica, use.
URLs Desacopladas no Template
Nunca faça isso:
Sempre use:
Benefícios reais:
Isso evita bugs silenciosos no futuro.
Grid de Posts como Componente de Domínio
Esse grid não pertence à home.
Ele pertence ao domínio de posts.
Ele pode aparecer em:
-
Home
-
Categoria
-
Busca
-
Autor
Insight profissional:
Templates também seguem Domain-Driven Design.
Paginação Desacoplada
Por que isolar?
Porque amanhã você pode trocar por:
-
Infinite scroll
-
HTMX
-
AJAX
-
Cache fragmentado
Quando a paginação está isolada, a evolução é simples.
Estado Vazio é Obrigatório
Sempre trate o vazio:
Isso salva você em:
-
Primeiro deploy
-
Ambiente de staging
-
Blog recém-criado
Regra prática:
Todo fluxo precisa de estado vazio tratado.
O que nunca deve estar no Template
Se você quer arquitetura limpa, o template não pode ter:
-
Queries
-
Regra de negócio
-
Lógica complexa
-
Decisão de domínio
Template só apresenta.
View decide.
Model organiza.
Quando isso está claro, o projeto escala.
Em resumo
HTML em Django não é detalhe visual.
É arquitetura de produto.
Quando você usa:
-
Herança correta
-
Blocos semânticos
-
Includes bem pensados
-
HTML acessível
-
Templates defensivos
Você cria base para crescer sem dor.
Na prática, foi assim que parei de refatorar blog toda semana.