Views in Odoo define how data is presented. Form view for single record, list view for overview, Kanban for visual board, pivot for analysis. Everything is defined in XML and can be extended with inheritance and XPath.
Form view
Structured with <form>, <sheet>, <group>, and <field>. Groups create column layout. Notebook with pages organizes tabs. Statusbar shows progression. Chatter at the bottom provides internal communication and history.
List view
Simple: <list> with <field> elements for columns. Attributes like optional="show" let users hide and show columns. Grouping with default_group_by. Summation of numeric fields with sum="Total".
Kanban view
Most flexible: you design the card with QWeb template inside <kanban>. Shows fields, images, progress bars, tags. Each card can have its own buttons and menus. Groups based on a field (stage_id, status, assignee).
Inheritance with XPath
Instead of copying and modifying an entire view, you inherit the existing one and make targeted changes. <xpath expr="//field[@name='email']" position="after"> adds a field after email. Positions: before, after, replace, inside, attributes. It keeps your customizations minimal and upgrade-safe.
Common mistakes
XPath matching more elements than intended (use more specific expressions). Forgetting to set priority (lower numbers load first). Fields in the view that don't exist on the model (Odoo crashes on load). Test views after every change; the feedback loop is fast.