templating system

Erik Max Francis max at alcyone.com
Sun Apr 10 21:41:31 EDT 2005


Ksenia Marasanova wrote:

> I am looking for fast, simple templating system that will allow me to
> do the following:
> - embed Python code (or some templating code) in the template
> - generate text output (not only XML/HTML)
> 
> I don't need a framework (already have it), but just simple
> templating. The syntax I had in mind is something like that:
> 
> # in Python module
> def some_view():
>     # some code goes here...
>     records = get_some_data()
>     req = get_request_class()
>     return template('some_template.tmpl', **locals()).render()
> 
> # in some_template.tmpl:
> 
> <ul>
> <%for record in records%>
>     <li><a href="<%=record.id%>"><%=record.title%></a></li>
> <%end for%>
> </ul>
> 
> 
>>From what I saw Cheetah seems to be the only one that can do it. I was
> hoping there might be alternatives that I've missed :)
> Thanks!

EmPy will also do this quite handily:

	http://www.alcyone.com/software/empy/

In EmPy, your template would look something like this::

	<ul>
	@[for record in records]@
		<li><a href="@record.id">@record.title</a></li>
	@[end for]@
	</ul>

Batch expanding the template would look like something as simple as 
(substituting in your example)::

	...
	return em.expand(open(templateFilename).read(), **locals())

-- 
Erik Max Francis && max at alcyone.com && http://www.alcyone.com/max/
San Jose, CA, USA && 37 20 N 121 53 W && AIM erikmaxfrancis
   There's this perfect girl / Someone no one can see
   -- Lamya



More information about the Python-list mailing list