Skip to content

whiteclover/Choco

Repository files navigation

Choco Templates for Python

Choco is a template library written in Python. It provides a familiar, non-XML syntax which compiles into Python modules for maximum performance. Choco's syntax and API borrows from the best ideas of many others, including Django templates, Cheetah, Myghty, and Genshi. Conceptually, Choco is an embedded Python (i.e. Python Server Page) language, which refines the familiar ideas of componentized layout and inheritance to produce one of the most straightforward and flexible models available, while also maintaining close ties to Python calling and scoping semantics.

Nutshell

<%inherit file="base.html"/>
<%
    rows = [[v for v in range(0,10)] for row in range(0,10)]
%>
<table>
    % for row in rows:
        ${makerow(row)}
    % endfor
</table>

<%def name="makerow(row)">
    <tr>
    % for name in row:
        <td>${name}</td>\
    % endfor
    </tr>
</%def>

UI

UI tag is inspired by EmberJs Handlebarjs tempalte.

index.html

This is an UI Page
<%@ PostView(post_id)/>

ui/post.html

This is a Post View

Name: ${post.title}
Content: ${post.content}
def create_ui_container():
    from choco.ui import UIContainer, UIModule
    ui_container = UIContainer(["template/ui"])

    class PostView(UIModule):

        default_template = "post.html"

        def initialize(self):
            self.thing = Thing("Post")

        def render(self, post_id):
            post = self.thing.getByPostId(post_id)
            return {
                "post": post
            }
    ui_container.put_ui("PostView", PostView)
    return ui_container

tl2 = lookup.TemplateLookup(directories=["template"], ui_container=create_ui_container())
t12.get_template("index.html").render(post_id=122)

Philosophy

Python is a great scripting language. Don't reinvent the wheel...your templates can handle it !

License

Choco is licensed under an MIT-style license (see LICENSE). Other incorporated projects may be licensed under different licenses. All licenses allow for non-commercial and commercial use.

About

Pythonic Template Engine

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published