About

Last updated: 1 August 2020

Goal

PythonEatsTail explains its own creation. The goal is to show all that is needed to build and deploy an example Python site. While all tutorials are obviously related, they are as self-sustained as possible and can be viewed independent of each other.

Why Python? Most websites are made with Wordpress, based on the programming language PHP. However, Python is quickly becoming more popular. It is future proof, secure and with frameworks such as Django and Wagtail offers endless possibilities.

Why this guide? Digging through numerous sites with tutorials on many specific topics, the urge arose to create a guide providing an integrated experience, consisting of four elements:

  • written tutorials, explaining all steps with code
  • video tutorials, showing every programming step
  • the site itself, being the result of that programming
  • the code on Github

Contents

The tutorials on the site start from scratch and cover at least the following:

  • installing Django and Wagtail in a virtual environment
  • setting up a custom user model with address, phone number, photo etc.
  • setting up authentication, including email verification and social accounts
  • versioning on Github
  • multiple languages
  • content management with Wagtail
  • webpages with images, embedded video, code
  • footer with cookie statement and privacy policy
  • editable forms with reCaptcha
  • allowing users to comment on articles
  • creating an editable navigation menu with language switch and account login
  • testing with coverage and factory boy
  • deployment on a Linux server with Nginx, Gunicorn and Supervisor
  • backup and restore

Technologies

The site is developed in Python with Django, using a PostgreSQL database, with a little Javascript / jQuery. Recent releases have been used as much as possible, currently Python 3.8, Django 3.0, Wagtail 2.9, Ubuntu 20.04, PostgreSQL 12.

As with any software project, there is certainly room for improvement. If you find errors or have suggestions or maybe want to contribute, please contact us.

Acknowledgements

The official documentations of Django, Wagtail, allauth etc. are great. An effort has been made to stay as close them as possible and you'll find many references to them in the tutorials. Special thanks go to Kalob Taulien of:

who has included the video tutorials on his site, which is a great resource of tutorials on Wagtail. Other very useful resources are:

About python eating its tail

The ouroboros or uroboros is an ancient symbol depicting a serpent or dragon eating its own tail. Originating in ancient Egyptian iconography, the ouroboros entered western tradition via Greek magical tradition and was adopted as a symbol in Gnosticism and Hermeticism and most notably in alchemy. The term derives from Ancient Greek: οὐροβόρος, from οὐρά (oura), "tail" + βορά (bora), "food", from βιβρώσκω (bibrōskō), "I eat". The ouroboros is often interpreted as a symbol for eternal cyclic renewal or a cycle of life, death, and rebirth. (Wikipedia)

About the author

Paul Smits studied mathematics and computer science. He worked as a developer after his studies, was a manager and director in many different fields, always involved and concerned with digitalization and its impact on business. This project is an opportunity to be back 'under the hood' and develop himself again.