Skip to content
A skeleton django project setup for
Find file
Pull request Compare This branch is 8 commits behind idan:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


epio_skel - A skeleton Django project for

Getting started with is not a daunting task, but setting up a good project structure requires a thousand little tweaks to get "just right."

This skeleton project is my project base for working with It provides:

  • A settings module which provides for epio-specific settings without getting in your way during development.
  • Caching via redis -- does not have memcached. Relies on sebleier's excellent django-redis-cache. You'll still need to enable per-site/per-view caching on your own if you desire it.
  • A sensible epio.ini.
  • A sensible .gitignore.
  • PYTHONPATH settings which conform to epio's suggested best-practices: the project dir is on PYTHONPATH, so you import things from, not

How do I use this?

Download the project skeleton. If you've cloned the project, you'll probably want to remove the .git directory first.

Create a virtualenv for your project. You are using virtualenv, right?

Install some basic requirements using pip install -r requirements.txt. You are using pip, right?

You'll need to specify a value for SECRET_KEY in settings/ By default, Django concocts a random 50-character alphanumeric string for this value.

You'll also probably want to add settings/ to your .gitignore. It isn't that way out of the box because I wanted to include an example

An aside on the settings module

The settings module separates settings into three files by default:
The base settings file. Settings that apply to all environments (epio, development, etc) should go here. All other settings files should import from at the top of the file.
Settings specific to This settings file will only be loaded if there's an EPIO environment variable set -- which is taken care of by epio.ini. Put any epio-specific settings here.
If this file is present and the EPIO envvar is not set, it is imported. This is a good place to put development-related settings. Note that for this scheme to work, you must retain the import at the top of the file. The supplied example includes some common settings you'll want to fill in for local work.

Here, have a handy-dandy l33t ASCII-art flowchart:

* Start Here! *
---------------         ---------------         -----------
| Is EPIO     | --no--> | Is | --no--> | |
| envvar set? |         | present?    |         -----------
---------------         ---------------               ^
       |                       |                      |
      yes                     yes                     |
       |                       |                      |
       v                       v                      |
  -----------             ------------                |
  | |             | |                |
  -----------             ------------                |
       |                       |                      |
       \-----------------------\---- imports * from --/

That should be it! Happy epio'ing.

Something went wrong with that request. Please try again.