I’ve been studying and building with Wagtail for about 2 months now. I think I mentioned in a previous post that I had never worked with a CMS before, and it took some time to get used to its underlying logic. Once I understood why one would build with a CMS like Wagtail though, things started to make a lot more sense, so… here it goes, in my own words, what the purpose of a CMS is:
Developers use a CMS to build web applications that enable non-technical users to manage website content with maximum flexibility, while minimizing their exposure to the underlying code.
I think that’s more or less the gist of it. Of course I could make a website like Django Horizons using just Django, but it wouldn’t be very user friendly for someone less technical than me. Furthermore, a CMS like Wagtail has integrated support for things like Rich Text Fields, that allow users to input and format their content with more flexible styling and formatting options than a plain text paragraph or an image. If I wanted to write a sentence in this way, it would be problematic just using Django templates. With Wagtail it’s no work at all!

(this is how it looks when you work on a wagtail entry. you can preview how your content will look on different screen sizes!)
Anyway, I’ve been studying Wagtail, coding Wagtail and consuming as much Wagtail content as I can for more than a month now so here’s a few things I’ve come to realize about it:
- It’s very well designed and rich in useful features. A lot of work has gone into it over the years, and it has definitely gotten better compared to its older versions. I first did the up-to-date starting tutorial they have on the Wagtail website and it was great. Then I started working through a very in-depth youtube playlist from 2019, and it became clear that the CMS has come a long way since then. One example that comes to mind is how content panels as model fields used to be somewhat cumbersome to import and declare in older versions, because every input type had a different class associated with it. Now it’s the same class for most of them, the CMS does the heavy lifting, and it’s one less thing the developer needs to worry about. Much appreciated. I also think the admin panel is so much better looking than the one in vanilla Django.
- The official tutorial is very good, but the documentation is not very comprehensive. If you want to learn the basics of Wagtail 6 from the tutorial on the website, I think it's a very helpful walkthrough. However, when it comes to StreamFields, Blocks, Orderables and other more advanced topics, which are the areas on which the most change has taken place through different versions, it's hard to find helpful or up-to-date documentation, and some topics seem to be almost completely missing. Many classes and models have been deprecated along the way, so the older tutorials on YouTube feel very outdated.
- Its very code-oriented, and it can have a steep learning curve. I've seen people work with WordPress before, and Wagtail certainly expects one to get their hands dirty with code much more than WordPress does. Wagtail provides a lot of flexibility with regards to how you implement stuff, and I imagine it could be difficult to pick up without previous Django experience. The way Wagtail merges the Model, View and URL layers all into one is pretty magical, which can of course be either a good or a bad thing, but personally I had trouble understanding the abstraction at first, coming from vanilla Django. Not using Views at all makes Wagtail feel almost like an framework of its own.
- It has never gained the popularity that its design quality deserves. Maybe it’s simply that Python web development has never quite been at the top of the industry. Or maybe the CMS ecosystem suffers from the same stupid feedback loop seen in frontend development, where every company uses React, so everyone has to learn React, and companies are forced to use React to make hiring developers easier. As a result, React corners the market, and everything else becomes niche—whether or not the dominant technology ever was the best option then becomes an irrelevant question. I say this because a couple of PHP-based CMSs power the vast majority of websites, and it’s not clear to me whether PHP is genuinely a better language than Python, or if WordPress and Drupal are so much better than all the alternatives. Whatever the reason, Wagtail’s subreddit isn’t very active, and there isn't much recent instructional content on YouTube either. The content that does exist is often sponsored by the core team or created by members of the core team themselves. This contrasts with the large number of WordPress tutorials available.
All in all, I think Wagtail is definitely worth learning. I’d go as far as to say that it’s on par with Django REST Framework in terms of the value it adds to Django development, making them the two major third-party extensions every Django developer should learn. Of course, this comes with the caveat that Wagtail isn’t as commonly in demand in job openings. On the other hand, if you can’t work with DRF, you’re borderline unemployable as a Django developer.
From what I’ve gathered, a fair number of agencies use Wagtail, and I’ve found it very enjoyable to learn and work with.
In the coming weeks, I’ll probably reach out to every company I can find that uses Wagtail, asking about potential opportunities. I don’t have much experience yet, so I don’t expect many offers, but it can’t hurt to try.