Your first pick for a django power cord

iommi is a Django-based framework that magically create pages, forms and tables with advanced out-of-the-box functionality based on your applications models - without sacrificing flexibility and control.

Major features:

  • A system to project django model definitions into more high level definitions
  • Forms: view models, data validation, and parsing
  • Queries: filtering lists/query sets
  • Tables: view models for lists/query sets, html tables, and CSV reports
  • Pages: compose pages from parts like forms, tables and html fragments

All the components are written with the same philosophy of:

  • Everything has a name
  • Traversing a namespace is done with __ when . can’t be used in normal python syntax
  • Callables for advanced usage, values for the simple cases
  • Late binding
  • Declarative/programmatic hybrid API
  • Prepackaged commonly used patterns (that can still be customized!)
  • Single point customization with no boilerplate
  • Escape hatches included

See philosophy for explanations of all these.


class IndexPage(Page):
    title = html.h1('Supernaut')
    welcome_text = 'This is a discography of the best acts in music!'

    artists = Table(auto__model=Artist, page_size=5)
    albums = Table(
    tracks = Table(auto__model=Album, page_size=5)

urlpatterns = [
    path('', IndexPage().as_view()),

This creates a page with three separate tables, a header and some text:


For more examples, see the examples project.


See usage.

Running tests

We use hammett for tests, so pip install hammett then run hammett.

There’s a make test-live target for running tests interactively. You first need to pip install watchdog pyyaml argh.

For running the full tests on all supported environments: install tox then make test-all.




Indices and tables