𝗖𝗼𝗺𝗼 𝗔𝗽𝗿𝗲𝗻𝗱𝗶 𝗦𝗼𝗯𝗿𝗲 𝗖𝗼𝗻𝘁𝗲𝘅𝘁 𝗣𝗿𝗼𝗰𝗲𝘀𝘀𝗼𝗿𝘀 𝗲𝗺 𝗗𝗷𝗮𝗻𝗴𝗼

Estou construindo uma loja online de acessórios com Django.

Eu criei uma navbar para mostrar as categorias de produtos. No início, eu deixei as categorias hard-coded. Isso funcionou por um tempo.

Então percebi um problema. Se eu adicionar uma nova categoria, preciso atualizar a navbar manualmente. Isso é ineficiente.

Meu primeiro pensamento foi passar as categorias através do contexto na minha view. Logo vi um segundo problema. Todas as páginas precisam da navbar. Isso significa que eu teria que repetir o mesmo código em cada view. Isso cria um código bagunçado.

Encontrei uma maneira melhor: Django Context Processors.

Context processors tornam os dados disponíveis para todos os templates. Você não precisa passar dados de cada view.

Use context processors para:

Um context processor é uma função Python. Ele recebe um objeto request e retorna um dicionário.

Exemplo:

def custom_context(request): return { "custom_value": "olá dos context processors" }

Você deve registrar a função nas suas configurações. Adicione-a à lista context_processors dentro da configuração TEMPLATES.

Exemplo:

'OPTIONS': { 'context_processors': [ 'myapp.context_processors.custom_context', ], },

Agora, você usa os dados nos seus templates assim:

{{ custom_value }}

Isso resolveu meu problema. Minha navbar agora recebe os dados das categorias automaticamente em todas as páginas. Não preciso mais duplicar código.

Construir funcionalidades muitas vezes ensina novos conceitos. Para mim, foram os context processors.

Fonte: https://dev.to/merdas369/how-i-learned-about-context-processors-in-django-5e2h