Comment j'ai découvert les Context Processors dans Django

Je suis en train de construire une boutique d'accessoires en ligne avec Django.

J'ai créé une barre de navigation pour afficher les catégories de produits. Au début, j'ai codé les catégories en dur. Cela a fonctionné pendant un certain temps.

Puis j'ai rencontré un problème. Si j'ajoute une nouvelle catégorie, je dois mettre à jour la barre de navigation manuellement. Ce n'est pas efficace.

Ma première idée a été de passer les catégories via le contexte dans ma vue. J'ai vite constaté un second problème. Chaque page a besoin de la barre de navigation. Cela signifie que je devrais répéter le même code dans chaque vue. Cela crée un code désordonné.

J'ai trouvé une meilleure solution : les Django Context Processors.

Les context processors rendent les données disponibles pour tous les templates. Vous n'avez pas besoin de transmettre les données depuis chaque vue.

Utilisez les context processors pour :

Un context processor est une fonction Python. Elle prend un objet request et renvoie un dictionnaire.

Exemple :

def custom_context(request): return { "custom_value": "hello from context processors" }

Vous devez enregistrer la fonction dans vos settings. Ajoutez-la à la liste context_processors à l'intérieur du paramètre TEMPLATES.

Exemple :

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

Maintenant, vous utilisez les données dans vos templates de cette manière :

{{ custom_value }}

Cela a résolu mon problème. Ma barre de navigation récupère désormais automatiquement les données des catégories sur chaque page. Je ne duplique plus de code.

Développer des fonctionnalités permet souvent d'apprendre de nouveaux concepts. Pour moi, il s'agissait des context processors.

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