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 }}.
/blog/templates/read.htmlLignes modifiées : 26-41
Avant :
<meta property="og:image:width" content="{{ page.seo.og.image:width }}">
<meta property="og:image:height" content="{{ page.seo.og.image:height }}">
<meta property="article:published_time" content="{{ page.seo.og.article:published_time }}">
<meta property="article:modified_time" content="{{ page.seo.og.article:modified_time }}">
<meta property="article:author" content="{{ page.seo.og.article:author }}">
<meta property="article:section" content="{{ page.seo.og.article:section }}">
Après :
<meta property="og:image:width" content="{{ page.seo.og.image_width }}">
<meta property="og:image:height" content="{{ page.seo.og.image_height }}">
<meta property="article:published_time" content="{{ page.seo.og.article_published_time }}">
<meta property="article:modified_time" content="{{ page.seo.og.article_modified_time }}">
<meta property="article:author" content="{{ page.seo.og.article_author }}">
<meta property="article:section" content="{{ page.seo.og.article_section }}">
/blog/templates/blog/seo_meta.htmlLignes modifiées : 28-40
Avant :
{% if seo.og.article:published_time %}
<meta property="article:published_time" content="{{ seo.og.article:published_time }}">
{% endif %}
{% if seo.og.article:author %}
<meta property="article:author" content="{{ seo.og.article:author }}">
{% endif %}
{% for tag in seo.og.article:tag %}
<meta property="article:tag" content="{{ tag }}">
{% endfor %}
Après :
{% if seo.og.article_published_time %}
<meta property="article:published_time" content="{{ seo.og.article_published_time }}">
{% endif %}
{% if seo.og.article_author %}
<meta property="article:author" content="{{ seo.og.article_author }}">
{% endif %}
{% if seo.og.article_tags %}
{% for tag in seo.og.article_tags %}
<meta property="article:tag" content="{{ tag }}">
{% endfor %}
{% endif %}
/blog/seo_helpers.pyLignes 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'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).
Pour vérifier que tout fonctionne :
Démarrer le serveur :
cd /Users/duhaz/projets/blog-duhaz
./start.sh
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
Vérifier dans le code source HTML que les balises Open Graph sont correctement générées :
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta property="article:published_time" content="2024-10-30T...">
_ pour les clés de dictionnaire Python qui seront utilisées dans les templates Django: mais les variables Django doivent utiliser _Date de correction : 2 novembre 2025 Fichiers impactés : 3 fichiers Lignes modifiées : ~30 lignes