Hii,
Create a custom controller
-
In Odoo, dynamic website pages are usually served by controllers written in Python.
-
Your controller method renders a template and passes data (from models) to it.
Convert your static HTML page into a QWeb template
-
Take your existing HTML page and convert it into a QWeb template inside an Odoo module.
-
Add placeholders using QWeb syntax (t-foreach, t-esc, etc.) where you want dynamic data.
Example:
<t t-name="your_module.custom_page">
<h1>Products List</h1>
<ul>
<t t-foreach="products" t-as="product">
<li><t t-esc="product.name"/></li>
</t>
</ul>
</t>
Create a route to serve your page
-
In your controller, define a route URL and render your template with dynamic data.
Example controller snippet:
from odoo import http
class CustomPageController(http.Controller):
@http.route('/custom/page', type='http', auth='public', website=True)
def custom_page(self, **kwargs):
products = http.request.env['product.product'].search([], limit=10)
return http.request.render('your_module.custom_page', {
'products': products,
})
Link your page
-
Access your dynamic page via /custom/page (or your chosen route).
-
This page will now render your original HTML but with real-time data from the Odoo backend.