<story><title>Flask 1.0 Released</title><url>https://www.palletsprojects.com/blog/flask-1-0-released/</url></story><parent_chain><item><author>BerislavLopac</author><text>I understand that Flask has become popular because it is easy to learn, but my experience is that as your knowledge progresses it just keeps getting in your way. I particularly dislike some design choices which look like afterthought hacks, such as global variables for current request and using abort() functions instead of raising exceptions directly.&lt;p&gt;EDIT: To avoid hollow naysaying, here are some alternatives to Flask I find much better designed:&lt;p&gt;&lt;pre&gt;&lt;code&gt;    - Tornado Web Framework [0]
    - Falcon [1]
&lt;/code&gt;&lt;/pre&gt;
[0] &lt;a href=&quot;http:&amp;#x2F;&amp;#x2F;www.tornadoweb.org&amp;#x2F;en&amp;#x2F;stable&amp;#x2F;webframework.html&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;www.tornadoweb.org&amp;#x2F;en&amp;#x2F;stable&amp;#x2F;webframework.html&lt;/a&gt;&lt;p&gt;[1] &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;falconframework.org&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;falconframework.org&amp;#x2F;&lt;/a&gt;</text></item></parent_chain><comment><author>ckuhl</author><text>The real value of Flask is that it makes you appreciate what Django does by default.&lt;p&gt;When I first started learning Python &amp;#x2F; web frameworks, I went with Flask because it was smaller and &amp;quot;simpler&amp;quot;. As my project grew however, I had to organize it. I was basically imitating what Django gives you by default, though less cleanly.</text></comment>
<story><title>Flask 1.0 Released</title><url>https://www.palletsprojects.com/blog/flask-1-0-released/</url></story><parent_chain><item><author>BerislavLopac</author><text>I understand that Flask has become popular because it is easy to learn, but my experience is that as your knowledge progresses it just keeps getting in your way. I particularly dislike some design choices which look like afterthought hacks, such as global variables for current request and using abort() functions instead of raising exceptions directly.&lt;p&gt;EDIT: To avoid hollow naysaying, here are some alternatives to Flask I find much better designed:&lt;p&gt;&lt;pre&gt;&lt;code&gt;    - Tornado Web Framework [0]
    - Falcon [1]
&lt;/code&gt;&lt;/pre&gt;
[0] &lt;a href=&quot;http:&amp;#x2F;&amp;#x2F;www.tornadoweb.org&amp;#x2F;en&amp;#x2F;stable&amp;#x2F;webframework.html&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;www.tornadoweb.org&amp;#x2F;en&amp;#x2F;stable&amp;#x2F;webframework.html&lt;/a&gt;&lt;p&gt;[1] &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;falconframework.org&amp;#x2F;&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;falconframework.org&amp;#x2F;&lt;/a&gt;</text></item></parent_chain><comment><author>dfee</author><text>Pyramid is great, lacks the problems (magic) you mentioned, and is now what pypi.org is built on: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;docs.pylonsproject.org&amp;#x2F;projects&amp;#x2F;pyramid&amp;#x2F;en&amp;#x2F;latest&amp;#x2F;index.html&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;docs.pylonsproject.org&amp;#x2F;projects&amp;#x2F;pyramid&amp;#x2F;en&amp;#x2F;latest&amp;#x2F;in...&lt;/a&gt;&lt;p&gt;I’ve used it off and on since 2010 (as Pylons) and have been happy with it.</text></comment>