Bharat's Digital Garden

Django

Django is a batteries included [python] framework. Which means you get a lot of features out of the box. But, if you chose to go against the framework, you are pretty much on your own. To be fair, this is pretty rare. The choices made for you are industry standard and most often then not, you will feel happy that most of these things have been thoroughly thought out for you.

There are some big names using Django in the industry, instagram is one of them.

Meta class magic.

This means you will get really cool functionality, but a lot of it is generated at runtime. Typing code becomes a pain because there are technically no clear types till runtime. You do something along the lines of Model.objects.all(), it will return back a QuerySet but not a Queryset of Model. I personally am not comfortable with this because I am a big fan of types, as you probably must have noticed in [principles].

ORM

Django ORM is really cool and gives a lot of features, but at the cost of abstracting away SQL. If you need performance, you need to write SQL sometime or the other. I’ve seen Django developers who have no experience with raw SQL. That is unacceptable.

DRF (Django rest framework)

A fantastic, well thought out framework which works along with Django. If you have to develop a rest framework using Django, this is the de facto option. Before going forward and writing code, make sure you really understand DRF concepts. Concepts like Serializers, Viewsets, Functional/Class based views are really powerful/useful once you get a hang of it. Absolutely worth putting effort and learning.

References