4 ms·
So, this isn't Jinja2? I thought Django was using Jinja2, but I guess I was wrong.
by kolev 12y ago
So, this isn't Jinja2? I thought Django was using Jinja2, but I guess I was wrong.
- scrollaway 12y agoJinja is a bit more liberal when it comes to bringing pythonic syntax to the template, while Django retains a philosophy of "designers are sheep and we must feed them grass". Disclaimer: I think part of that previous statement might be biased.
- andybak 12y agoTo rephrase it more charitably - Django's philosophy might be better summed up as "if you need a full programming language in your templates then you're doing something wrong". Remember PHP started as a templating language and look where that got us.
- scrollaway 12y agoHeh. Don't get me wrong, I agree with the general philosophy, but they took it a bit far. Before Django 1.3(?), there was no {% if x == y %}, or != etc; instead you had to use {% ifequal %}, {% ifnotequal %} and so on. Pretty ridiculous. There are some similar lingering design decisions which do nothing but make the language uglier and more verbose. Jinja has the same philosophy of not doing evals in the template, but is still quite a bit more pythonic (eg. method calls with arguments, most python objects etc are allowed)
- andybak 12y agoI'm curious to see when those things actually result in better code. A template tag is usually a much better idea and hardly onerous in terms of time or code. Django's opinionated stance on this helped me to become a better developer. It pushed that stuff back into my views - which in turn made me realise that a lot of the stuff I'd been putting in my views really should be pushed back into a layer below that. It set me on the path to understanding the value of a good separation of concerns.
- kolev 12y agoThanks!