When comparing Wagtail vs Flask, the Slant community recommends Wagtail for most people. In the question“What are the best Python based CMSs?” Wagtail is ranked 2nd while Flask is ranked 7th. The most important reason people chose Wagtail is:
Although Wagtail comes with only the most basic features, it's by no means an incomplete CMS. It's very extendable and it's up to the developer to choose how to extend it.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro Extendable
Although Wagtail comes with only the most basic features, it's by no means an incomplete CMS. It's very extendable and it's up to the developer to choose how to extend it.
Pro Lightweight with the most useful functionalities
Wagtail is a simple and lightweight CMS with the most basic and useful set of features baked in out of the box.
Pro Great separation between developers and editors
Wagtail has the perfect separation between developers and editors. It allows you to construct a site with minimal fuss with features like the awesome stream field and hand it over to virtually any content editor. You can build the site with no knowledge of Django and with the simple interface require no training to get started.
Although this will always require developer time, with 2 or 3 days you can quickly get up a boilerplate site that will fulfill 80% of any site you will develop. Leaving only the bespoke parts to do.
It also nicely slots into any Django project with no fuss.
Pro Minimalist without losing power
Flask is very easy to get up and going, with vanilla HTML or with bootstrap pieces. It doesn't take much lines of Python to load Flask to get headers working, etc, and since it's all modular you don't have to have something you don't want in your application.
Pro Lots of resources available online
Flask is one of the most popular Python web frameworks, if not the most popular one. As such, there's plenty of guides, tutorials, and libraries available for it. A large number of important Python libraries, such as SQLAlchemy have libraries for Flask, which add valuable bindings to make the development process and the integration between these libraries and Flask as easy as possible.
Pro Extremely easy to build a quick prototype
Even though it's pretty minimalistic out of the box, Flask still provides the necessary tools to build a quick prototype for a web app right after a fresh install. With all the main components pretty much packed in the flask
package, building a simple web app in a single Python file is as easy as it gets.
Pro Very flexible
Flask gives developers a lot of flexibility in how they develop their web applications.
For example, the choice of not having an ORM, but instead choosing one suited to the task, or another area where Flask gives a lot of options to developers is the templating. They can use Jinja2, Flask's default templating language or choose from a number of different templating languages they desire.
Pro Great documentation
The official documentation is very thorough and complete. Everything is explained in-depth and followed by extremely well-explained tutorials that tackle real-world problems.
Pro Able to use ORM or "true SQL"
Cons
Con ImageChooser widgets dont fully work in sub panels
Con You need to be experienced in Django to get the most of it
Installing Wagtail on a remote server is a little more complicated than FTPing a bunch of files. Furthermore there's no ecosystem for plugins and themes so it can only be fully extended by a developer experienced with Django.
Con Not async-friendly
Flask is explicitly not designed to handle async programming.
Con Setting up a large project requires some previous knowledge of the framework
Setting up a large project with Flask is not that easy considering how there's no "official" way of doing it. Blueprints are a useful tool in this regard but require some additional reading and are a bit tricky to get right for a beginner.
The lack of some defaults can also be problematic. Having to choose between different libraries for a certain task is never easy, especially if you have never worked with Flask before.
Con Threadlocals and globals used everywhere
The default way of creating applications in flask makes it hard to use reusable and clean code.
Con HTML-oriented, not API-oriented
Not necessarily designed for making APIs, though that is possible