Now that I've gotten relatively familiar with web2py, I'd like to give Django a go.
What are the main differences?
What would be the most efficient way to get started taking into account web2py knowledge? (It must help to have some python application framework knowledge,no?)
EDIT
Also, if you've used both, can you offer an opinion on which you prefer and why?
web2py was very much inspired by Django and if you know one it is easy to learn the other. We added some features we did not find in Django, including: database migrations (alter tables automatically), tickets on errors, a web based IDE, a database abstraction layer that works on Google App Engine, a role based access control mechanism with pluggable login modules.
One of the fundamental design differences is that in Django apps are implemented as modules and therefore you need to restart the server when you edit them. In web2py instead Models/Views/Controllers are not modules, they are executed (not imported) by the frameworks and therefore you do not need to restart the server when they change.
Another difference is that Django uses an ORM, web2py uses a DAL. The DAL is slightly lower level than the Django ORM and this makes it closer to the SQL syntax (for example is allows left joins, arbitrary aggregates, nested selects and combinations thereof) while remaining portable (we support 10 different databases). The DAL also make it easy to do dynamic meta-programming of models (such as create models at runtime based on specs stored in file such as an XML or CSV file).
Django has been around longer so you find more people skilled with it and more applications deployed.