Se rendre au contenu
Le Nid · Tous les articles
Tech

QWeb expliqué simplement, sans jargon.

Si vous travaillez de près ou de loin avec un site Odoo, vous avez déjà croisé le mot QWeb. Souvent dans une phrase confuse de développeur. Voici ce que c'est, à quoi ça sert, et pourquoi ça change tout pour un site fait à la main. Aucun prérequis, juste 10 minutes.

Auteur
Charlotte
Publié le
2 juin 2026
Lecture
9 min
QWeb, c'est juste du HTML qui pense.

Quand un développeur Odoo te parle de QWeb, il a un peu l'air d'invoquer un sortilège. Le nom n'aide pas. Q comme quoi ? Web comme on s'en doute. En réalité, c'est probablement la chose la plus simple et la plus puissante de tout Odoo, à condition de comprendre une seule idée : QWeb, c'est du HTML qui sait penser. Pas plus, pas moins. Voici le tour complet, sans pollution de jargon.

Définition

C'est quoi, vraiment.

QWeb est le moteur de templates d'Odoo. Un template, c'est juste un fichier qui décrit à quoi ressemble une page, avec des trous dedans pour mettre des données qui changent. Pense au modèle de facture Word de ton comptable : la structure est figée, mais les chiffres et les noms changent à chaque client. Sur le web, c'est pareil : la page produit d'une boutique a toujours le même squelette, mais le titre, le prix et la photo changent selon le produit affiché.

Concrètement, un fichier QWeb a l'extension .xml et ressemble à du HTML. Si tu sais lire

Bonjour
, tu sais déjà 80% de ce qu'il faut. Le reste, ce sont des attributs spéciaux qui commencent par t-. Ce sont eux qui font la magie. Quand le navigateur reçoit la page, ces attributs ont disparu : Odoo les a transformés en vrai HTML avant l'envoi.

L'idée à retenir

QWeb n'est pas un langage compliqué qu'on apprend des mois. C'est du HTML enrichi de six ou sept mots-clés. Une fois compris, tu lis n'importe quel template Odoo comme un livre ouvert.

Syntaxe

La syntaxe en cinq balises.

Tout QWeb tient dans une poignée d'attributs. Si tu retiens ceux-là, tu comprends 95% du code que tu croiseras. Les voici, dans l'ordre où on les rencontre vraiment.

Le vocabulaire de base
  • t-name Le nom du template. C'est la clé qui permet à Odoo de le retrouver. Comme un identifiant unique dans une bibliothèque.
  • t-call Pour insérer un autre template à l'intérieur de celui-ci. Très utile pour appeler le layout commun du site (header, footer) sans le réécrire.
  • t-field Affiche un champ depuis la base de données. Le nom du produit, le prix, la photo : tout ce qui vient de l'ERP.
  • t-if Affiche le bloc seulement si une condition est vraie. Exemple : montrer la promo seulement si le produit est en solde.
  • t-foreach Répète un bloc autant de fois qu'il y a d'éléments dans une liste. La grille des produits, la liste des articles de blog, les langues du menu.
  • t-set Définit une variable réutilisable dans le template. Pratique pour les titres SEO ou les classes CSS conditionnelles.

Ces six mots, en vrai, c'est tout. Le reste — t-att, t-options, t-esc — sont des cousins qui te dépanneront un jour, mais qui ne sont pas essentiels pour lire un template. Si tu connais les six du dessus, tu comprends ce que fait n'importe quelle page Odoo.

Un exemple concret, ligne par ligne

Voici à quoi ressemble un mini template QWeb qui affiche une grille de produits. Lis-le comme du HTML avec des annotations dedans.

grille_produits.xml QWeb
1t t-name="shop.grille"
2 section class="wn-shop"
3 ‹!-- on boucle sur tous les produits --›
4 t t-foreach="products" t-as="p"
5 article class="wn-card"
6 h3 t-field="p.name"/›
7 span t-field="p.price"/›
8 ‹!-- promo : on n'affiche que si solde --›
9 span t-if="p.on_sale"Solde‹/span
10 ‹/article
11 ‹/t
12 ‹/section
13‹/t

Si tu lis ça comme une recette : « créer une section, pour chaque produit, faire une carte avec son nom et son prix, et s'il est en solde, afficher le badge ». C'est tout. Pas de magie noire. Juste du HTML qui sait répéter et conditionner.

Le truc qui change tout

Hériter sans casser.

Voilà la fonctionnalité de QWeb qui justifie tout le reste : l'héritage. Tu peux prendre n'importe quel template livré par Odoo et le modifier sans le toucher. Tu écris un petit fichier à côté qui dit « dans le template d'origine, à tel endroit, ajoute ça, remplace ceci ». Et Odoo s'occupe d'assembler tout proprement à chaque affichage.

Pourquoi c'est révolutionnaire ? Parce que quand Odoo sort une nouvelle version, le template d'origine est mis à jour par l'éditeur, et ton petit fichier de surcharge survit. Tu n'as rien cassé. Tu n'as pas dupliqué le code. Tu as juste posé une couche de personnalisation par-dessus. C'est ce qui permet à WebNest de modifier en profondeur l'apparence d'un site Odoo sans rendre les futures montées de version douloureuses.

Sans héritage

Tout dupliquer.

Tu recopies le template entier, tu modifies, tu publies. Le jour où Odoo met à jour, ta version diverge et il faut tout refaire à la main.

  • Maintenance douloureuse à chaque upgrade
  • Risque élevé de bugs silencieux
  • Code dupliqué partout
Avec héritage QWeb

Surcharger chirurgicalement.

Tu décris ce que tu veux modifier dans le template d'origine. Odoo applique ta surcharge au moment du rendu. Le template natif reste intact.

  • Upgrade Odoo sans casse
  • Personnalisation lisible et localisée
  • Reprise possible par n'importe qui

L'héritage QWeb, c'est la mécanique discrète qui rend un site Odoo vraiment maintenable.

— Charlotte Moonen · WebNest
Choix technique

Pourquoi Odoo a choisi ça.

Il existait déjà des moteurs de templates très populaires côté Python : Jinja, Mako, Chameleon. Odoo aurait pu en prendre un. Pourquoi avoir développé QWeb maison ? Parce que la contrainte de départ était différente : les templates devaient être éditables par un non-développeur, depuis l'interface web d'Odoo. Pas dans un éditeur de code. Pas avec une syntaxe obscure de moteur Python.

Du coup, la décision a été simple : un template QWeb doit ressembler à du HTML pur. N'importe quel intégrateur, designer ou administrateur curieux peut l'ouvrir, comprendre ce qui se passe, et modifier un texte ou une classe CSS sans rien casser. Les attributs t- sont là pour la mécanique, mais ils ne polluent pas la lecture. C'est élégant.

6 balises à connaître
1 format unique pour back et front
0 framework JS imposé

Autre atout que peu de gens mesurent : QWeb sert autant pour les pages web que pour les rapports PDF et les emails transactionnels. La facture envoyée à ton client, l'email de bienvenue, la page d'accueil : tout passe par le même moteur. Une seule grammaire à apprendre, trois usages couverts. C'est rare.

Côté WebNest

Ce que ça permet concrètement.

Tout ce qui rend un site WebNest reconnaissable repose sur QWeb. Voici ce qu'on en fait, projet après projet, et pourquoi ça compte pour toi si on travaille ensemble.

  • Des templates de page entièrement nouveaux qui remplacent les templates standards d'Odoo. La page produit de ton e-commerce, la fiche d'un événement, le détail d'une offre d'emploi : on en écrit une version qui te ressemble, et on la branche au moteur Odoo. Toutes tes données restent connectées.
  • Des surcharges chirurgicales sur les pages qu'on ne veut pas refaire entièrement. Le panier, le checkout, le compte client : on garde la mécanique d'Odoo qui fonctionne, on change le habillage. Le client a la performance native et un visuel sur mesure.
  • Des blocs réutilisables qu'on appelle avec t-call sur plusieurs pages. Le hero, la section témoignages, le footer : un seul fichier source, dix endroits qui l'utilisent. Tu changes une virgule au hero, ça se répercute partout.
  • Des emails et factures aux mêmes codes graphiques que le site. Parce que QWeb les anime aussi, on peut harmoniser. Le client reçoit une facture qui n'a pas l'air d'avoir été générée par un autre logiciel que ton site.
Pour les partenaires

Si tu es intégrateur Odoo et que tu lis ça : une bonne maîtrise de l'héritage QWeb, c'est probablement le meilleur retour sur investissement front-end que tu puisses faire en 2026. Tes clients sentent immédiatement la différence entre un site qui dupliquait et un site qui surcharge proprement.

À retenir

Ce qu'il faut retenir.

Si tu ne dois retenir que trois choses de cet article, voilà lesquelles. D'abord, QWeb n'est pas un truc obscur réservé aux développeurs Odoo. C'est du HTML qui sait penser, avec six mots-clés à apprendre. Tu peux ouvrir n'importe quel template livré par Odoo et le lire comme un livre.

Ensuite, l'héritage est la vraie magie. C'est ce qui permet à une agence sérieuse de personnaliser ton site sans hypothéquer tes futures montées de version. Si on te propose un site Odoo qui duplique les templates au lieu de les surcharger, fuis : tu paieras la dette plus tard.

Enfin, QWeb est un avantage compétitif réel, pas une contrainte. Un moteur unique pour le site, les emails et les PDF, c'est rare et précieux. C'est aussi ce qui nous permet, chez WebNest, de livrer des sites radicalement sur mesure tout en restant 100% dans l'écosystème Odoo. Pas de couche externe, pas de hack. Juste du QWeb bien écrit.

À propos de l'autrice Le Nid · 2026
CM
Charlotte Moonen
Fondatrice et Lead Front-end · WebNest
Charlotte code tous les jours dans le module web Odoo. Templates QWeb, surcharges, snippets, animations : tout passe par les fichiers XML qu'elle écrit à la main. Elle a fondé WebNest pour défendre l'idée qu'un site Odoo peut être profondément personnalisé sans jamais sortir de l'écosystème.
Un projet QWeb à lancer ?

Votre Odoo mérite un vrai sur-mesure.

30 minutes en visio. Vous nous montrez votre Odoo, on vous dit ce qu'on peut faire et à quel délai. Aucun engagement, aucun jargon inutile.