I would be fascinated to read your rationale for just using Django. Specifically I'm curious what use-cases you see as Django having an advantage in? (Specific examples make for a much more interesting dialogue.) In relation to this, do you think there are contrasting use-cases where Flask might excel as a more suitable option? Personally, I do not favor Flask or Django or <insert web application suite here> exclusively; instead I evaluate a use-case and then determine which tool best fits my needs. However, it would be amazing if you could somehow show that "just use django" is axiomatic to web development in Python...
Indeed, I'd be curious as well to hear about why someone should use Django. I initially started using Flask because it is the lightest framework I could find in terms of dependencies, boilerplate, and mental-modeling. Additionally, it had EXCELLENT documentation for everything, from the super newbie (me) to the more seasoned expert.
Since then I've yet to run into a case where I want a lot more than what Flask offers. However, If there's something better that I just don't know about, I'd love to hear about it!
I've used both Flask and Django more or less extensively: generally I like to start out in Flask and move to Django if necessary, as opposed to the other way around.
The three big things I think Django has over Flask:
- ORM
- Django-admin
- A stronger ecosystem
(But of course, none of these are entirely absent from Flask -- its not as if its particularly difficult to plug in SQLAlchemy, and I believe there's a Flask-admin package nowadays.)
My general advice is that if you feel like the thing you're developing is going to turn into a CRUD app, use Django.
I don't think the ORM concern is valid - SQLAlchemy is probably the best ORM available for python and you can drop it straight in to your flask app.
As you say, it really depends on your use-case. I wrote a number of crud apps in Django in a previous life (when Django was still fairly young). I found that out of the box you could get something set up quickly but trying to bend it to your (or the clients) will sometimes required a lot of work. I remember at one point having to duplicate a huge chunk of code into one of my models. That's the tradeoff you'll always run into. You'll get a really complete system for free but it won't be as flexible as you may one day need it to be.
I believe Flask actually has the advantage in the ORM since you aren't tied to Django's strictly RDBMS structure and Flask will allow you to easily use NoSQL solutions if that's your thing. Flask with SQLAlchemy is just as powerful as Django's ORM.
Flask does have an admin plugin but it's nowhere near as good, polished, or documented as Django's.
Django does have the advantage of a bigger mind share, users and ecosystems.
> Flask with SQLAlchemy is just as powerful as Django's ORM.
sqlalchemy is more powerful than django orm.
> I believe Flask actually has the advantage in the ORM since you aren't tied to Django's strictly RDBMS structure and Flask will allow you to easily use NoSQL solutions if that's your thing
easy there. you can as well use nosql with django (orm is useless then, by definition) and you are in the same exact situation as using nosql engines with flask. if you get rid of the orm in django (which is doable), you are just bringing your own batteries here, just as you are bringing them to flask.
Use Django when you're an agency making a finite delivery to a client. :)
Edit: on a serious note, use it when all the dependencies it comes with matches what you exactly need. Once you're down the path of swapping something out, all the third-party apps/packages (one of the key features) become useless. This becomes problematic when you start to use something like MongoDB and end up having to write a lot of code on your own.
I would be fascinated to read your rationale for just using Django. Specifically I'm curious what use-cases you see as Django having an advantage in? (Specific examples make for a much more interesting dialogue.) In relation to this, do you think there are contrasting use-cases where Flask might excel as a more suitable option? Personally, I do not favor Flask or Django or <insert web application suite here> exclusively; instead I evaluate a use-case and then determine which tool best fits my needs. However, it would be amazing if you could somehow show that "just use django" is axiomatic to web development in Python...