Building Large Flask Apps in the Real World
Bottle and Flask are similiar and a great place to learn and start your journey with Python web <i>application</i> development.  It is pseudo-minimalist though, so either you must almost immediately start reinventing the wheel to build basic stuff that you will need (as a novice developer I started by writing my own sessions and cookie handler).<p>The next realisation you&#x27;ll come to is that all that stuff has already been written by someone else as addons.  So you try that but eventually you&#x27;ll find you are in so much pain from problems with integrating addons that you will realise that you would be best off with something that has all the basic functionality &quot;batteries included&quot;.  So then you&#x27;ll try to find projects on github that have already baked together Flask plus all the plugins into a boilerplate project. Then you&#x27;ll find that there&#x27;s many ways to bake all that stuff together and start to wonder if maybe you&#x27;re now using a framework.  But the boilerplate Flask with addons integration doesn&#x27;t feel like it has a really well thought out consistent overarching model.<p>So you&#x27;ll then look at full featured integrated frameworks like Django where it&#x27;s all integrated according to an architectural vision (perfect or otherwise is a matter of opinion) and although you might mot like some of the components, at least its all built in.  Flask still carries of cruft and mental model though, because it is from earlier days of web development when you built the front end in the back end using things like Jinja templates.<p>And then one day you&#x27;ll need to build just a simple REST API without all the bells and whistles needed in a web application.  So you can then look at Falcon which is extremely minimalist for developer who know they don&#x27;t want any extra web application stuff at all including things like back end UI generation with templates.  It&#x27;s a sharp knife because there&#x27;s almost nothing in it, and never attempted to provide the features needed to build user oriented web applications, so it has a very small mental model to grasp.<p>TLDR:<p><i></i> Bottle and Flask are great for finding your feet in web development without being forced to learn too many concepts all at the same time.<p><i></i> Django or Pyramid or something full featured for web application development<p><i></i> Falcon for REST API development<p>If you are willing to take on the cognitive load of going straight to your destination, I would recommend beginners start with Django or Pyramid or Falcon.  If (and this is entirely reasonable) you need to get going in Python web development without being overwhelmed by the concepts, go to Bottle or Flask but move on as soon as you can.<p>If you love Flask and have the skills and competence to craft your own architecture and carefully selected from a menu of addons that suit you and know how to whittle out unneeded functionality, then Flask is the right choice for you.