Hacker News new | ask | show | jobs
by jmduke 4740 days ago
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.

2 comments

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.

Agreed on both counts. (I don't use SQLAlchemy nearly as much as I should, and I'm often reminded of that fact.)
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.

"Flask will allow you to easily use NoSQL solutions if that's your thing"

Agreed - we normally use flask alongside psycopg2 and postgres but recently we've been using it with NEO4J for fun

http://www.coolgarif.com/brain-food/flask-api-over-neo4j-in-...