Overslaan naar inhoud

Tech · 2 juin 2026 · 9 min leestijd

QWeb eenvoudig uitgelegd, zonder jargon.

QWeb is de template-engine van Odoo. Het is HTML met een paar extra attributen die bepalen wat er wordt getoond en wanneer. De echte meerwaarde is overerving: u past een pagina aan zonder het oorspronkelijke bestand aan te raken, dus zonder de Odoo-updates te breken. Vijf tags volstaan om de essentie te begrijpen.

Werkt u van dichtbij of van ver met een Odoo-site, dan bent u het woord QWeb vast al tegengekomen. Vaak in een verwarrende zin van een ontwikkelaar. Hier leest u wat het is, waarvoor het dient en waarom het alles verandert voor een site die met de hand is gebouwd. Geen voorkennis nodig, amper 10 minuten.

QWeb is gewoon HTML dat nadenkt.

Inhoud

  1. Wat het echt is
  2. De syntaxis in 5 tags
  3. Overerven zonder te breken
  4. Waarom Odoo hiervoor koos
  5. Wat het mogelijk maakt
  6. Wat u moet onthouden

Als een Odoo-ontwikkelaar het over QWeb heeft, klinkt het een beetje alsof hij een toverspreuk uitspreekt. De naam helpt ook niet. Q van wat? Web, dat spreekt voor zich. In werkelijkheid is het waarschijnlijk het eenvoudigste en krachtigste onderdeel van heel Odoo, op voorwaarde dat u één idee begrijpt: QWeb is HTML dat kan nadenken. Niet meer, niet minder. Hier volgt de volledige uitleg, zonder vakjargon.

Referentie: QWeb is de officiële template-engine van Odoo, gebruikt om de frontend en de PDF-rapporten te genereren op basis van XML. Documentatie: Odoo, QWeb Templates, geraadpleegd in augustus 2026.

Wat het echt is.

QWeb is de template-engine van Odoo. Een template is gewoon een bestand dat beschrijft hoe een pagina eruitziet, met open plekken voor gegevens die veranderen. Denk aan het Word-sjabloon voor facturen van uw boekhouder: de structuur ligt vast, maar de bedragen en namen veranderen bij elke klant. Op het web werkt het net zo: de productpagina van een webshop heeft altijd hetzelfde skelet, maar de titel, de prijs en de foto veranderen naargelang het getoonde product.

Concreet heeft een QWeb-bestand de extensie .xml en lijkt het op HTML. Kunt u <p>Hallo</p> lezen, dan kent u al 80% van wat u nodig hebt. De rest zijn speciale attributen die beginnen met t-. Daar zit de magie. Wanneer de browser de pagina ontvangt, zijn die attributen verdwenen: Odoo heeft ze vóór het verzenden omgezet in echte HTML.

Om te onthouden

QWeb is geen ingewikkelde taal waar u maanden over doet. Het is HTML aangevuld met zes of zeven sleutelwoorden. Eens u dat doorhebt, leest u elke Odoo-template als een open boek.

De syntaxis in vijf tags.

Heel QWeb past in een handvol attributen. Onthoudt u deze, dan begrijpt u 95% van de code die u tegenkomt. Hier zijn ze, in de volgorde waarin u ze in de praktijk tegenkomt.

De basiswoordenschat

t-name
De naam van de template. Het is de sleutel waarmee Odoo hem terugvindt, zoals een unieke code in een bibliotheek.
t-call
Om een andere template in deze template in te voegen. Erg handig om de gemeenschappelijke layout van de site (header, footer) op te roepen zonder die te herschrijven.
t-field
Toont een veld uit de database. De productnaam, de prijs, de foto: alles wat uit het ERP komt.
t-if
Toont het blok alleen als een voorwaarde waar is. Voorbeeld: de promotie enkel tonen als het product afgeprijsd is.
t-foreach
Herhaalt een blok zo vaak als er elementen in een lijst zitten. Het productraster, de lijst met blogartikels, de talen in het menu.
t-set
Definieert een variabele die u in de template kunt hergebruiken. Handig voor SEO-titels of voorwaardelijke CSS-klassen.

Die zes woorden, meer is het eigenlijk niet. De rest (t-att, t-options, t-esc) zijn neven die u ooit uit de nood zullen helpen, maar die niet essentieel zijn om een template te lezen. Kent u de zes hierboven, dan begrijpt u wat elke Odoo-pagina doet.

Een concreet voorbeeld, regel per regel

Zo ziet een mini-template in QWeb eruit die een productraster toont. Lees hem als HTML met aantekeningen erin.

// productraster.xml
<t t-name="shop.grille">
  <section class="wn-shop">
    <!-- we lopen door alle producten -->
    <t t-foreach="products" t-as="p">
      <article class="wn-card">
        <h3 t-field="p.name"/>
        <span t-field="p.price"/>
        <!-- promo: enkel tonen bij korting -->
        <span t-if="p.on_sale">Korting</span>
      </article>
    </t>
  </section>
</t>

Lees het als een recept: "maak een sectie, maak voor elk product een kaart met naam en prijs, en toon de badge als het afgeprijsd is". Dat is alles. Geen zwarte magie. Gewoon HTML dat kan herhalen en voorwaarden stellen.

Overerven zonder te breken.

Dit is de functie van QWeb die al de rest rechtvaardigt: overerving. U kunt eender welke template die Odoo meelevert nemen en aanpassen zonder hem aan te raken. U schrijft een klein bestand ernaast dat zegt: "voeg in de oorspronkelijke template op die plaats dit toe, vervang dat". Odoo zorgt ervoor dat alles bij elke weergave netjes wordt samengevoegd.

Waarom is dat revolutionair? Omdat bij een nieuwe versie van Odoo de oorspronkelijke template door de uitgever wordt bijgewerkt, en uw kleine overschrijvingsbestand blijft gewoon werken. U hebt niets kapotgemaakt. U hebt geen code gedupliceerd. U hebt alleen een laag maatwerk bovenop gelegd. Zo kan WebNest het uitzicht van een Odoo-site grondig aanpassen zonder dat toekomstige versie-upgrades pijnlijk worden.

Zonder overerving

Alles dupliceren.

U kopieert de volledige template, past hem aan en publiceert. De dag dat Odoo een update uitbrengt, wijkt uw versie af en moet u alles met de hand overdoen.

  • Pijnlijk onderhoud bij elke upgrade
  • Groot risico op stille bugs
  • Overal gedupliceerde code
Met QWeb-overerving

Chirurgisch overschrijven.

U beschrijft wat u in de oorspronkelijke template wilt wijzigen. Odoo past uw overschrijving toe op het moment van de weergave. De standaardtemplate blijft intact.

  • Odoo upgraden zonder schade
  • Leesbaar en gericht maatwerk
  • Overdraagbaar aan eender welke ontwikkelaar

QWeb-overerving is het discrete mechanisme dat een Odoo-site echt onderhoudbaar maakt.

Charlotte Moonen · WebNest

Waarom Odoo hiervoor koos.

Er bestonden al erg populaire template-engines in de Python-wereld: Jinja, Mako, Chameleon. Odoo had er een van kunnen nemen. Waarom dan zelf QWeb ontwikkelen? Omdat het uitgangspunt anders was: templates moesten bewerkbaar zijn door iemand die geen ontwikkelaar is, vanuit de webinterface van Odoo. Niet in een code-editor. Niet met een obscure syntaxis van een Python-engine.

De keuze was dan ook eenvoudig: een QWeb-template moet eruitzien als pure HTML. Elke integrator, designer of nieuwsgierige beheerder kan hem openen, begrijpen wat er gebeurt en een tekst of een CSS-klasse aanpassen zonder iets te breken. De t--attributen zorgen voor de mechaniek, maar storen het lezen niet. Dat is elegant.

6tags om te kennen
1formaat voor back- en frontend
0verplicht JS-framework

Nog een troef die weinig mensen inschatten: QWeb dient evengoed voor webpagina's als voor PDF-rapporten en transactionele e-mails. De factuur die naar uw klant gaat, de welkomstmail, de homepage: alles loopt via dezelfde engine. Eén grammatica om te leren, drie toepassingen gedekt. Dat is zeldzaam.

Wat het concreet mogelijk maakt.

Alles wat een WebNest-site herkenbaar maakt, steunt op QWeb. Dit is wat we er project na project mee doen, en waarom het voor u belangrijk is als we samenwerken.

  • Volledig nieuwe paginatemplates die de standaardtemplates van Odoo vervangen. De productpagina van uw webshop, de fiche van een evenement, het detail van een vacature: we schrijven er een versie van die bij u past en koppelen die aan de Odoo-engine. Al uw gegevens blijven gekoppeld.
  • Chirurgische overschrijvingen op pagina's die we niet volledig willen herbouwen. Het winkelmandje, de checkout, de klantenaccount: we behouden de werkende mechaniek van Odoo en veranderen het uiterlijk. De klant krijgt de native prestaties en een visuele stijl op maat.
  • Herbruikbare blokken die we met t-call op meerdere pagina's oproepen. De hero, de sectie met getuigenissen, de footer: één bronbestand, tien plaatsen die het gebruiken. Verandert u een komma in de hero, dan wordt dat overal doorgevoerd.
  • E-mails en facturen in dezelfde huisstijl als de site. Omdat QWeb ook die aanstuurt, kunnen we alles op elkaar afstemmen. De klant krijgt een factuur die er niet uitziet alsof ze door een ander programma dan uw site is gemaakt.

Voor partners

Bent u Odoo-integrator en leest u dit? Dan is een goede beheersing van QWeb-overerving waarschijnlijk de beste front-endinvestering die u in 2026 kunt doen. Uw klanten merken meteen het verschil tussen een site die dupliceerde en een site die netjes overschrijft.

Wat u moet onthouden.

Moet u maar drie dingen uit dit artikel onthouden, dan zijn het deze. Ten eerste: QWeb is geen obscuur ding dat voorbehouden is aan Odoo-ontwikkelaars. Het is HTML dat kan nadenken, met zes sleutelwoorden om te leren. U kunt elke template die Odoo meelevert openen en lezen als een boek.

Ten tweede: overerving is de echte magie. Daardoor kan een serieus bureau uw site personaliseren zonder uw toekomstige versie-upgrades te hypothekeren. Stelt iemand u een Odoo-site voor die templates dupliceert in plaats van ze te overschrijven, begin er dan niet aan: u betaalt die schuld later terug.

Ten slotte: QWeb is een echt concurrentievoordeel, geen beperking. Eén engine voor de site, de e-mails en de PDF's is zeldzaam en waardevol. Daardoor kunnen we bij WebNest ook sites leveren die radicaal op maat zijn en toch 100% binnen het Odoo-ecosysteem blijven. Geen externe laag, geen hacks. Gewoon goed geschreven QWeb.

Veelgestelde vragen

Moet u kunnen programmeren om QWeb te begrijpen?
Om een template te lezen niet: het is HTML met een paar extra attributen. Om er zelf te schrijven, moet u HTML en CSS kennen. QWeb voegt vijf hoofdtags toe, geen volledige programmeertaal.
Is QWeb specifiek voor Odoo?
Ja, het is de eigen template-engine van Odoo. Het is geen webstandaard, maar de logica ligt heel dicht bij die van andere engines: een waarde tonen, door een lijst lopen, een weergave aan een voorwaarde koppelen.
Waarom is overerving het belangrijkste punt?
Omdat u daarmee een pagina kunt aanpassen zonder het oorspronkelijke bestand aan te raken. Uw aanpassingen overleven de Odoo-updates, terwijl een hard herschreven view bij de eerste update wordt overschreven.
Kan een andere ontwikkelaar QWeb overnemen dat door WebNest is geschreven?
Precies daarom schrijven we standaard QWeb, zonder extra framework. Elke Odoo-ontwikkelaar kan de code overnemen, en u bent niet aan ons gebonden.

Een Odoo-website in gedachten?

Wij coderen Odoo-websites met de hand, in België. Geen template, geen drag-and-drop.

Bespreek uw project met ons

Moonen Charlotte, Founder en CEO bij WebNest. Met de hand gecodeerde Odoo-websites.