# Correction de l'erreur TemplateSyntaxError
## 🐛 Problème identifié
**Erreur** : `Could not parse the remainder: ':width' from 'page.seo.og.image:width'`
**Cause** : Django ne permet pas d'utiliser le caractère `:` dans les noms de variables des templates. Les clés de dictionnaire avec `:` (comme `image:width`, `article:published_time`) ne peuvent pas être accessibles via la syntaxe `{{ dict.key:subkey }}`.
## ✅ Fichiers corrigés
### 1. `/blog/templates/read.html`
**Lignes modifiées** : 26-41
**Avant** :
```django
```
**Après** :
```django
```
### 2. `/blog/templates/blog/seo_meta.html`
**Lignes modifiées** : 28-40
**Avant** :
```django
{% if seo.og.article:published_time %}
{% endif %}
{% if seo.og.article:author %}
{% endif %}
{% for tag in seo.og.article:tag %}
{% endfor %}
```
**Après** :
```django
{% if seo.og.article_published_time %}
{% endif %}
{% if seo.og.article_author %}
{% endif %}
{% if seo.og.article_tags %}
{% for tag in seo.og.article_tags %}
{% endfor %}
{% endif %}
```
### 3. `/blog/seo_helpers.py`
**Lignes modifiées** : 85-99, 103-110
**Changements dans le dictionnaire `og`** :
- `'image:alt'` → `'image_alt'`
- `'image:width'` → `'image_width'`
- `'image:height'` → `'image_height'`
- `'article:published_time'` → `'article_published_time'`
- `'article:modified_time'` → `'article_modified_time'`
- `'article:author'` → `'article_author'`
- `'article:section'` → `'article_section'`
- `'article:tag'` → `'article_tags'`
**Changements dans le dictionnaire `twitter`** :
- `'image:alt'` → `'image_alt'`
## 🎯 Solution appliquée
Au lieu d'utiliser `:` dans les clés de dictionnaire (qui n'est pas compatible avec la syntaxe des templates Django), nous avons remplacé par des underscores `_`.
**Important** : Les attributs HTML Open Graph utilisent toujours `:` (comme `og:image:width`), mais les variables Django utilisent maintenant `_` (comme `page.seo.og.image_width`).
## 🧪 Test
Pour vérifier que tout fonctionne :
1. Démarrer le serveur :
```bash
cd /Users/duhaz/projets/blog-duhaz
./start.sh
```
2. Visiter l'URL qui causait l'erreur :
```
http://127.0.0.1:8000/blog/mise-a-jour-majeure-du-blog-design-moderne-et-nouvelles-fonctionnalites
```
3. Vérifier dans le code source HTML que les balises Open Graph sont correctement générées :
```html
```
## 📝 Notes pour le futur
- **Convention de nommage** : Toujours utiliser des underscores `_` pour les clés de dictionnaire Python qui seront utilisées dans les templates Django
- **Open Graph** : Les propriétés HTML Open Graph utilisent `:` mais les variables Django doivent utiliser `_`
- **Tests** : Toujours tester les templates après modification des helpers SEO
---
**Date de correction** : 2 novembre 2025
**Fichiers impactés** : 3 fichiers
**Lignes modifiées** : ~30 lignes