Poor man's python templating - what should I worry about?
1 comments
The string interpolation operator isn't ideal. It isn't associative, so you can't paste in a few variables, and then a few more later, and it raises an exception rather than simply putting a message such as "Missing variable: X" in the output HTML.
I fixed this by simply using string replace(), and suitably unique replace tokens.
(Then again, I program in Notepad, preferring it for aesthetic reasons over Emacs, so go figure :-)
I fixed this by simply using string replace(), and suitably unique replace tokens.
(Then again, I program in Notepad, preferring it for aesthetic reasons over Emacs, so go figure :-)
If missing variables are an issue you could use defaultdict.
http://docs.python.org/lib/defaultdict-objects.html
http://docs.python.org/lib/defaultdict-objects.html
Good point, and thanks for pointing out defaultdict(); I wasn't even aware of that class. I suppose one could use defaultdict() to gain associativity also (pass 'not found' variables through unmodified). I think I still slightly prefer replace(), for uninteresting reasons.
myhtml = '''
<html><body>
<p>%(firstname)s</p>
<p>%(lastname)s</p>
</body></html>
''' % {'firstname':'john','lastname':'doe'}
It's not pretty, but I feel less hindered by this approach. I'm curious what people think the main downsides of this are...