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 tag is inspired by EmberJs Handlebarjs tempalte.
This is an UI Page
<%@ PostView(post_id)/>
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)
Python is a great scripting language. Don't reinvent the wheel...your templates can handle it !
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.