A case can be made that most of these so-called "underpowered" templates are actually 1) *overpowered*, and 2) based on the wrong paradigm.
By contrast, check out the templating in PSO (Python Service Objects), Twisted's Woven, and my own peak.web.templates. Each is based on the idea of designating portions of output as being rendered by Python components. But, the components aren't responsible for generating actual output markup. That is, the Python components don't know anything about markup language, they simply manipulate markup provided to them as parameters.
From this approach, you can do anything that a typical templating language does, but you're forced to do it modularly, in Python. The end result is that there's no code in your template, and no template in your code. Instead, UI developers simply choose from available structural manipulations to apply to the markup. The result is VB-like, in that you just add controls and parameterize them (with markup). If new controls are needed, you write them in Python, producing the best of both worlds.