3 ms·
Poor man's python templating - what should I worry about?
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...
- connellybarnes 19y agoThe 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 :-)
- bayareaguy 19y agoIf 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
- connellybarnes 19y agoGood 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.