4 ms·
Flask vs. Django
- andy_ppp 9y agoHaving used Flask on two large projects I would never want to use it again, it gives too much freedom and the community isn’t as good as Django and the application context means applying logic from the app to other things is more convoluted. In the end you can come to a Django project and know how it works, often that isn’t the case when inheriting Flask projects. Sqlalchemy is also very slow and complicated and I prefer Django’s less complicated ORM. After using something as simple, clear and elegant as Phoenix and Elixir I never want to go back.
- flavio81 9y ago>Having used Flask on two large projects I would never want to use it again, it gives too much freedom Precisely the same reason I chose Flask. >Sqlalchemy is also very slow and complicated and I prefer Django’s less complicated ORM. You will find that a significant part of the criticism of Django is directed towards its ORM. SQLAlchemy is one of the best Python libraries out there.
- ScottWRobinson 9y agoAuthor here. Interesting to hear your perspective on this. I'm personally biased towards Flask, which I was trying to avoid when writing this article. Glad to see my thoughts on the two frameworks are reflected by other developers as well
- andy_ppp 9y agoThere is definitely room for both opinionated and balanced thoughts on this. Do have a play with Elixir, Phoenix and Ecto though, it'll change the way you think about programming and mutable state forever.
- submeta 9y agoElixir is really awesome. All the things that I do not like in Python [0] and [1] (and many more) are gone in a functional programming language where you have functions that always return values. But I do miss the large community of Python and the excellent documentation and discussion groups. --- [0] mutable vs non-mutable (strings and tuples) data structures for instance. This leads to inconsistencies: text = "hey there", text.sort() is not possible, data=[5, 7, 3], data.sort() is possible. [1] since not every method returns a value we can't do method chaining. Ruby and JavaScript would allow me to do things like this: data.split.sort.first(). I used to do things like that in Mathematica years ago by postfix notation: f[data] // g // h (meaning: h(g(f(data)))). And Elixir allows this as well with data |> f |> g |> h. Can't do things like that in Python, have to create temp variables to capture intermediate results.
- deleted 9y ago[deleted]