This directory 'campaigns' is like the django directory 'mysite'
mentioned in the tutorial.  There are two installed apps in there.
The first, polls, is what you get if you work your way through the
tutorial, but decide that you want named urls, to use forms, to have a
static site, and to have a lot of integration tests written using
unittest -- and some unittests too, when I was able to figure out how.
It's mostly of use as a reference for how to do things, and because
when things aren't working it is nice to have an even smaller and more
basic app to try things out on.

One caveat, for people who are used to doing TDD.  It seems that many
places in Django the design decision made was that it was better to
render something, even if you didn't ask for it properly, completely
silently.  Users should never get error messages or warnings.  And
probably that was a good decision for a newspaper.  But it means that
you really have to keep eyeballing your pages and testing that they
are all working when you make changes, because they can and do break
silently.  Your tests can keep passing while your pages lose
functionality because your url mappings didn't work as you expected.

If you start getting errors
NoReverseMatch: Reverse for <something> with arguments '()' and keyword 
arguments <somedict> not found  
then the first place to check is to see that the names you gave your
regexps in urls.py are the same names you referred to them in views.py.

to run tests, cd to campaigns and type:

python manage.py test numpy_on_pypy or use make test from the Makefile

For some reason, django wants your apps to live in <top_level_dir>/app
except for the templates, which live in <top_level_dir>/templates/app .
Sticking them under app as well seems a lot more reasonable to me.  But
I am sticking with the given setup, given that I don't know why it is
that it is done that way, and if its essential for some behind-the-scenes
magic I am unaware of.