pythonpyramidchameleontemplate-metal

How to use template inheritance with Chameleon?


I am using latest Pyramid to build a web app. Somehow we have started using Chameleon as the template engine. I have used Mako before and it was extremely simple to create a base template. Is this possible with chameleon as well?

I have tried to look through the docs but I can not seem to find an easy solution.


Solution

  • With Chameleon >= 2.7.0 you can use the "load" TALES expression. Example:

    main.pt:

    <html>
    <head>
        <div metal:define-slot="head"></div>
    </head>
    <body>
        <ul id="menu">
            <li><a href="">Item 1</a></li>
            <li><a href="">Item 2</a></li>
            <li><a href="">Item 3</a></li>
        </ul>
        <div metal:define-slot="content"></div>
    </body>
    </html>
    

    my_view.pt:

    <html metal:use-macro="load: main.pt">
    
    <div metal:fill-slot="content">
        <p>Bonjour tout le monde.</p>
    </div>
    
    </html>