.. -*- ispell-local-dictionary: "british" -*- ************ Introduction ************ Django is a great framework that eases application development. The aim of the ``dja_skel`` tool is to further ease the development process by pushing the idea behind the ``startproject`` and ``startapp`` commands one step further. Let's suppose that you need to create a new class based view in the ``views`` package, this involves: #. create a new module with some common imports #. subclass the appropriate class view #. overwrite some methods and define some attributes #. add an import in the ``__init__.py`` module #. add an URL definition to the ``urls.py`` module #. create a template Here's a lot of repetitive work that should be avoided in order to focus on the real problem we are trying to solve. Steps 1, 2 and, to some extent, 6 can be streamlined using templates. Steps 4 and 5 require some *intelligence* that modifies existing files. Such a combination of templates and intelligence (in the form of python code) is what ``dja_skel`` calls an *skeleton*. The project's goal is not to provide a set of skeletons, since every programmer has developed his own patterns, instead it focuses on providing building blocks to ease the creation of new skeletons and the customisation of existing ones. It does provide a couple of simple skeletons just for demonstration purposes. Once created and registered the skeletons become available either through the ``dja_skel`` script or the ``skel`` management command, ready for use. Take a look at the :ref:`chapter_tutorial` to have a grasp on how all of this works.