I love working with Django, consider it a beautiful tool, and feel significantly more productive with it than any other framework I have worked with.
However, I did not get into Django to learn how to program (or to learn how to program with Python). Rather, I got into Django after I already had experience programming in Python and several other languages. Consequently, I didn't have to learn how to think like a programmer (or how to translate my thoughts into Python), rather I had to learn how to use Django to make building web apps easier.
Forgive me if this is unpopular, but I actually agree with this comment. I don't think Django is great for beginning programmers. However, I think that any sort of abstraction is bad for beginning programmers. In fact, I would go so far as to argue that beginning programmers should arm themselves with a very basic text editor, a list of assignments, and some source code written by extremely good programmers.