Poor man's python templating - what should I worry about?

1 points by johnrob ↗ HN
After churning through the various templating package, I now just use triple quoted strings and dictionary substitution. I never have to read docs, and never forget how to use it. Also, I never run into cases that break the system.

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...

3 comments

[ 1.5 ms ] story [ 20.6 ms ] thread
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 :-)

If missing variables are an issue you could use defaultdict.

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.