Django's getting old
I've been playing around with Django for years. Back when I was a PHP developer that was learning Python it was great. It works the way you expect an MVC framework to work so if you're coming from another language with similar frameworks it's great.
For the past year though I've been working with it pretty solidly in my 9 to 5. After all that time I still go to Django meetups and learn new things about the framework which certainly lives up to its 'batteries included' mantra.
But here's the thing: I think it's a bit dated these days. Django is impressive in what it can do and it's relative ease of use, but dated. Don't get me wrong, I love it, genuinely, this isn't some 'hate on an OS project post' but it was conceived a long time ago and things have changed.
I've done a small handful of projects with Laravel in the last few years. It's delight to use, so much so that it makes me fall in love with PHP again and Django could learn a lot from it.
For example, in Laravel, if your controller (or view) returns an array, Laravel just converts that into a JSON response.
At MelbDjango last night there was talk of stream response and how that's not possible because of Django's templating. I've got a feeling that it would be possible with Laravel because of it's template caching.
These days APIs are almost the default response from a server side application. I can't remember the last time I built a site that didn't have at least an API component so it makes sense that you should just be able to return an array or dictionary. I find Django is just a little too verbose with it's requests and responses. You need that stuff but most of it can just be assumed 90% of the time.
My preference is probably for Flask in terms of Python web frameworks at the moment. But given the amount you get straight out of the box with Django, as soon as I need any sort of user interface or admin for a site I find myself automatically fall back to Django because it will just save you so much time. And the Django ORM is reason enough to use Django in itself.
I'm actually surprised that there hasn't been a new, non-micro, Python web framework to come out lately and challenge Django. Maybe that's one for Django 2.