CORRECTIONS_ERREURS_SITEMAP.md 2.8 KB

Correction des erreurs de génération du sitemap

🐛 Problèmes identifiés

Problème 1 : ContentNotRenderedError

django.template.response.ContentNotRenderedError: 
The response content must be rendered before it can be accessed.

Cause : La réponse Django doit être rendue avant de pouvoir accéder à son contenu.

Solution : Appeler response.render() avant d'accéder à response.content

Problème 2 : UnorderedObjectListWarning

UnorderedObjectListWarning: Pagination may yield inconsistent results 
with an unordered object_list: <class 'blog.models.Cat_Blog'> QuerySet.

Cause : Les QuerySets utilisés dans le sitemap doivent être ordonnés pour la pagination.

Solution : Ajouter .order_by() à tous les QuerySets

✅ Corrections appliquées

1. Fichier : scripts/generate_sitemap_preview.py

Avant :

response = views.sitemap(request, sitemaps)
with open(output_file, 'wb') as f:
    f.write(response.content)  # ❌ Erreur ici

Après :

response = views.sitemap(request, sitemaps)
response.render()  # ✅ Rendre avant d'accéder au contenu
with open(output_file, 'wb') as f:
    f.write(response.content)

2. Fichier : blog/sitemaps.py

CategorySitemap - Avant :

def items(self):
    return Cat_Blog.objects.all()  # ❌ Non ordonné

CategorySitemap - Après :

def items(self):
    return Cat_Blog.objects.all().order_by('cb_titre')  # ✅ Ordonné

PageSitemap - Avant :

def items(self):
    return Page.objects.filter(p_publier=True, p_type='page')  # ❌ Non ordonné

PageSitemap - Après :

def items(self):
    return Page.objects.filter(
        p_publier=True, 
        p_type='page'
    ).order_by('p_adresse')  # ✅ Ordonné

🧪 Test

Après correction, tester avec :

python scripts/generate_sitemap_preview.py

Le script devrait maintenant :

  • ✅ Générer le sitemap sans erreur
  • ✅ Créer le fichier static/sitemap_preview.xml
  • ✅ Afficher les statistiques

📊 Résumé des fichiers modifiés

  1. scripts/generate_sitemap_preview.py - Ajout de response.render()
  2. blog/sitemaps.py - Ajout de .order_by() dans 2 classes

⚠️ Note importante

Ces corrections sont nécessaires pour le bon fonctionnement du sitemap en production. Sans elles :

  • Le sitemap pourrait ne pas se générer correctement
  • Les warnings pourraient polluer les logs
  • La pagination pourrait être inconsistante

🚀 Prochaines étapes

  1. Tester la génération du sitemap
  2. Vérifier que le sitemap en ligne contient bien des URLs
  3. Si le sitemap est encore vide, exécuter python scripts/fix_sitemap_sites.py

Ces corrections font partie de la résolution complète des problèmes SEO.