Django is not Python

I have noticed an interesting phenomenon of young software developers that start learning a specific coding language from a Framework rather than mastering the language on the first place, to me, it's almost like knowing how to cook a recipe without having tried the ingredients first; it all goes well if the process is seemingless, but the moment there is an exception things can turn sour very quickly. 

Currently Django is my Framework of choice. Not only does it use Python, but despite all of its flaws it does a fantastic job in maintaining some of the principles that make Python so great (i.e. DRY) while speeding up the development process by adding structure: MVC, great DB handling and design. "The Web Framework for perfectionists with deadlines"

The problem is that convenience can be a dangerous thing; as with most Frameworks it is very easy to get lost in abstraction of all that magic that happens under the hood. It is terribly addictive, when I am developing on Django I don't really feel like I am coding at all, it feels like  operating a factory line joining parts together, by the time I a done its difficult to know/remember how I got there. 

For example Classes in Django have very little resemblance to Python Classes. From a configuration perspective, it is far from ideal, but if a developer is not fully versed on Python before dwelling in the "Merlin World" of Django, looking a the way that Django converts strings into objects for example may look like an act of Magic. 

Django is a fantastic tool used by Python developers to speed up the development process, I do not recommend it as a starting point to anyone wanting to learn Python.