Enable Dark Mode!
By: Sonu S

How to Create Jinja Templates in Odoo 16 ERP

Technical Odoo 16

Jinja2 is a popular Python modeling engine, while Odoo is a popular Open-Source Enterprise Resource Planning (ERP) Software. Odoo 16 is the sixteenth major release of Odoo. In Odoo, Jinja2 is used as the default template engine to generate dynamic content in views, reports and email templates. Jinja2 is integrated with Odoo's Object Relational Mapping (ORM) for rendering Odoo model data in HTML, XML, and other formats. Using Jinja2 in Odoo enables more flexible and powerful templates and better performance compared to other template engines. It also allows developers to easily create custom reports and email templates. Overall, the combination of Jinja2 and Odoo 16 provides developers with a set of powerful tools to create complex custom applications and reports.

Jinja templates are used in Odoo 16 to render dynamic web pages. Odoo 16 uses the Jinja2 templating engine, which is a powerful and flexible engine for creating templates. Here are the steps to create a Jinja template in Odoo 16:

Create a new module or use an existing one.

Create a new directory called "templates" in the module's root directory.

Create a new file in the "templates" directory with a .xml extension. This file will contain the Jinja template code.

Define the Jinja template in the .xml file using the following format:

<?xml version="1.0" encoding="utf-8"?>
    <template id="template_id" name="Template Name">
        Jinja template code goes here.

The id attribute is a unique identifier for the template, and the name attribute is a human-readable name for the template.

Inherit the desired view, and reference the Jinja template inside that view's tag using the following format:

<?xml version="1.0" encoding="utf-8"?>
        <template id="base.view_company_form_inherit" inherit_id="base.view_company_form" name="Company form">
            <xpath expr="//div[@name='main']" position="inside">
                <t t-call="module_name.template_id"/>

Jinja2 is a popular templating engine used in Odoo to dynamically generate web pages, emails, and reports. It allows you to define templates using a combination of HTML and Python code, with the ability to include control structures, variables, and filters. Following are some examples of using Jinja templates in Odoo 16.

In Odoo 16, we can use Jinja templates to render dynamic values from a Python controller or model.

From odoo import http

from odoo.http import request

class MyController(http.Controller):
    @http.route('/my-route', auth='public')
    def my_route(self, **kwargs):
        return http.request.render('my_module.my_template', {
            'my_variable': 'Hello, World!',

In the example above, we defined a my_route controller method that returns a rendered Jinja template named my_template. We pass a dictionary with the key my_variable and the value Hello, World!  to the model, which can then be rendered using the syntax {{ my_variable }}.

Jinja templates also support control structures like if, for, and with.

Finally, Jinja is a powerful templating engine in Odoo for rendering dynamic content into templates. It allows the creation of reusable templates and the use of Python code in templates. Jinja also provides a safe way to export data by automatically avoiding potentially dangerous characters.

Odoo uses Jinja to create dynamic templates for various views, such as reports, email templates, and website pages. Developers can use Jinja to customize the look of Odoo by modifying existing templates or creating new ones.

Overall, Jinja plays a vital role in Odoo's template system and is an essential tool for Odoo developers. Its flexibility and power make it ideal for creating dynamic and personalized models in Odoo.

If you need any assistance in odoo, we are online, please chat with us.


Leave a comment




Cybrosys Technologies Pvt. Ltd.
Neospace, Kinfra Techno Park
Kakkancherry, Calicut
Kerala, India - 673635



Cybrosys Technologies Pvt. Ltd.
1st Floor, Thapasya Building,
Infopark, Kakkanad,
Kochi, India - 682030.



Cybrosys Techno Solutions
The Estate, 8th Floor,
Dickenson Road,
Bangalore, India - 560042

Send Us A Message