Django conferences have a tradition: there’s an external luminary that gets to give a critical talk on Django. His talk won’t be that. He’s not external either: he wrote two scoops of Django together with Audrey (see also my review).
Being critical is sometimes easy. Just bash class based views, for instance. Bashing is easy. A rant like Zed Shaw’s is fun, but he’s not asked because of his rants, but because of his contributions (like books).
Similarly, Django delivers working stuff and that working stuff makes a lot of our work possible. So here are some good points about Django:
Django is everywhere. So many people and companies use it.
Django is powered by Python. Pep8, python is beautiful. And there’s the
import this zen of python that we use all the time to steer others and
ourselves in the right direction.
Django’s API wins. It is understandable. No weird names: templates, views,
logging, sessions. Django projects also have understandable structures. If
templates/ directory, you
know someone messed something up.
Fat models are great. Just put your business logic all on your models. They
do get big this way, however. You can make a separate module with helper
functions you call in your model. Just call it with a model attribute. This
way you get a reasonably small
models.py and another file with very
testable small functions. Win!
The API is clear and logical. We’re not fighting about architecture, we are getting things done.
Django views are simple callables. (Even class based views).
Django is awesome at deprecation. Code often just keeps working fine for multiple Django versions.
Django has lots of features. For instance, Django’s admin is awesome. This is what you use to sell Django to others.
Tip: don’t try to use the admin with a nosql database. Just build something from scratch, that’s easier than trying to get it working and especially keeping it working.
Django’s full stack is awesome. Real projects are being done in unextended python+django. No third party packages. Not everyone goes to conferences and not everyone knows everything on pypi. You can get a lot done with just Django (though external packages help a lot!).
Django is also python. There are over 30000 packages! Even if only 20%
Documentation. Django set the bar for others.
Truth be told, some other projects have better documentation now. Django set the bar and others followed. They’re playing by our rules :-)
Django is humble. We have a tradition of invited critical talks. They shape the community, they shape the core committers.
Here are two critical talk summaries I have:
Good criticism is good. They got a lot on their book. That was hard, but the book is much better for it.
The django community is generous. There’s almost an unwritten rule: “the more you help people in the Django/Python community, the more the community helps you”.
They recieved a lot of help with their book. They also helped others with free books in case they couldn’t pay for it. But that required an email to ask for it. Note that Daniel and Audrey did ask for something in return: either buy the book later, donate to charity or help someone.
It worked! Somone gave a free guitar course to someone else. Someone bought a homeless person a dinner. People did projects for schools/churches/whatever. Contributions to open source software.
It worked! People did good work! Lots of small local positive actions. All over the world.
Call to action: be awesome. Make the world a better place.
My name is Reinout van Rees and I work a lot with Python (programming language) and Django (website framework). I live in The Netherlands and I'm happily married to Annie van Rees-Kooiman.
Most of my website content is in my weblog. You can keep up to date by subscribing to the automatic feeds (for instance with Google reader):