Feb. 18, 2015  
In Articles by Iunary


Wagtail, a new Django based CMS built by Torchbox, has been getting lot of attention recently. Originally it was a private project for the Royal college of art and open sourced later as Tom Dyson the co-founder of Torchbox mentioned here.

There are many Django based content management systems like Django cms, Mezzanine, FeinCMS and so on. So why a new Django cms?

Wagtail comes with lot of features and functionalities that makes it so flexible and easy to extend and customize. It's shipped with many options which offering the flexibility for developers and an elegant and ergonomic user interface for content authors/editors.

wagtail admin

I can mention some highlighted features like:

  • Pretty interface and user-friendly
  • Good user experience
  • flexibility
  • Easy to find and edit specific content
  • ElasticSearch for searching
  • Good document management
  • Save drafts and submit for moderation
  • Easy to use and to set up
  • Comes with a demo App including good examples

And many more, just to let you the pleasure of discovering them by yourself.


Wagtail can work on most Django supported database management systems, but PostgreSQL is the most recommended for production.

Wagtail has strong support for Elasticsearch, both in the admin interface and for users of the website, and is faster and more powerful than the Django ORM.

There are many ways to setup Wagtail and our development environment to start using it, we are going to mention three of them.

Wagtail and Vagrant

Wagtail offers a Vagrant box that includes all the dependencies for a fully-fledged Wagtail environment and includes a set of standard templates and page types as a demo of a Wagtial based website.

PS: Im using Vagrant version 1.7.2

$ git clone https://github.com/torchbox/wagtaildemo.git
$ cd wagtaildemo
$ vagrant -v
Vagrant 1.7.2
$ vagrant up
$ vagrant ssh
$ #Create a new super user to access wagtail admin
$ ./manage.py createsuperuser
$ #To update Elasticsearch
$ ./manage.py update_index
$ #Let's run wagtail demo now
$ ./manage.py runserver

This will make the app accessible on the host machine as - you can access the Wagtail admin interface at

Wagtail, Yoman and Vagrant

Yeoman offers generate-wagtail a tool for a quick start wagtail projects, the generator makes it so easy to get you up and running with a fresh copy of Wagtail.

By running a simple command line you can get a new wagtail project shipped with a vagrantfile to run their official box with all dependencies installed and ready to work.

$ yo wagtail

It will ask you to name your project, so name it whatever you like and press enter. You just created a new clean wagtail project. Now, you need to follow the same steps as we mentioned on the above with vagrant to provision your local vagrant box. For this time to access the wagtail project you must use or just open the vagrantfile and change the port 8111 to whatever you like.

Wagtail, pip and Virtualenv

We are going to create a python virtual environment and then install wagtail using pip.

$ mkvirtualenv blogenv
(blogenv)$ pip install wagtail

By installing wagtail a new command line will be available for use to create new wagtail projects.

To create a new wagtail project all we need is to type the following command:

(blogenv)$ wagtail start blog
(blogenv)$ ./manage.py migrate
(blogenv)$ ./manage.py createsuperuser
(blogenv)$ ./manage.py runserver

Congratulation, you have prepared your development environment and wagtail. All you need now it to give it a try and start discovering wagtail options and features.

I didn't mention how to setup it using Docker. So, you can check out https://registry.hub.docker.com/search?q=wagtail and give it a try yourself.

We come to the end of this story and we are going to create a blog using wagtail in the next story.


There are currently no comments. You can be first!

Sign in