Django is a wonderful framework as long as you work inside the box. There's a large enough of a community for support, plenty of documentation, and alot of the pieces for a website are already written for you and work just fine.
Where Django seems to break down is:
1. When you upgrade Django, or
2. When you start customizing Django
With just about every release of Django, something breaks. Thankfully, these changes are usually outlined in the release notes, but this often results (from what I've seen) in projects running on fairly old versions of Django because nobody wants to break a working website or app by upgrading their framework. Where I come from (sysadmin turned web dev,) you don't want to run outdated software and you don't want things to break. With Django, you're constantly stuck between a rock and a hard place.
Theoretically, you can write all the middleware, decorators, backend authentication modules, etc you want and plug it into Django and have it work flawlessly; however, this isn't always the case in practice. This blog post from one person explains their gripes with extending ,and eventually replacing, Django: http://blog.brandonbloom.name/2009/08/dropping-django.html
It's important to keep in mind that Django was ultimately developed for news websites. This makes it a great framework for building CMSes, blogs, etc but causes it to break down when you start moving outside of that use case.
(Also, FWIW, Django doesn't natively support schema migrations, although their are tools such as "South" that implement this functionality.)
I think that if you're interested in using a Python-based like framework, you should also consider Pylons and Tornado.