This is the second part of my journey on testing / learning / comparing these frameworks.
So, after 3 months of intense testing, here are some personal conclusions about each framework.
All over the web there are a ton of comparison blog posts. Normally, the author explains the strengths and weaknesses of each framework and at the end of the blog post says that in conclusion, they are basically all equal and after all, it depends on your needs.
That's right, it depends on your needs and it's also true that all three can do the job. But you already know that! You don't have to read a blog to learn it. What we all want to read in these blogs is their opinion / recommendation / point of view.
So for a change, here I will do exactly the opposite and will only give my personal opinion and no blah, so be careful know that my comments are not facts but just my personal opinion.
Let's start with Django. According to many blogs, this framework is one of the easiest to learn. Since it uses the Python language, so I guess by default it should be easy ...
I think quite the opposite. Django has its very unique way of doing things and although it's an MVC framework it doesn't work quite the same as a traditional MVC framework. You have to learn several conventions unique to Django to really understand it. Not that it was that hard, but for me it was the most difficult compared to Rails and Laravel.
Also, when working with Django, we feel like we are still in the 90s. The CSS style of the Admin Panel is deprecated. Also, compared to other frameworks, there has been less innovation in general in recent years.
Additionally, many Django packages are out of date and have never been upgraded to the recent version of Django. This is especially true for anything related to the model and views. (the frontend part).
Backend libraries are much more popular and better maintained.
An example of Django's frontend weakness (compared to the other two) is the template engine. The Django template engine does not work with Python code but with a generic language of limited syntax. In Rails, the templates work with Ruby and in Laravel, it works with PHP. I would have preferred the Python language in the template engine. The Django template engine can be changed or improved with custom tags, but it's a more advanced concept.
One of the powerful features of the Django interface is the class base view. It allows inheritance and mixin. But the learning curve is steppy and you should be familiar with the concepts of OOP. It took me a while to learn it completely.
I think Django's data access ORM and auto-migration is the best of the three frameworks tested. It is quick to code and easy to use. In addition, Django is a mature and powerful product. Every situation and coding concept has already been well thought out.
The Python ecosystem is huge, so you never have to worry about whether a specific package will be available or not.
I think the best use of the Django framework will be to match it with a frontend like React or Vue.js. Django as a Rest API is very easy to implement, maintain, and is very powerful. For this kind of setup, it would be my best choice before Rails and Laravel.
That's all for part 2, tomorrow in part 3 I will do the same with Rails and in part 4 I will do the same with Laravel.
Remember these are not facts but just my personal opinion. I'm not crazy and know or can guess why Django made certain design decisions and I understand and respect that. It's hard to please everyone.
Also, before you think I'm too hard on Django, wait until you read the other two parts :-)