django-environments =================== Manage different settings for different locations (systems), like local (your machine), development (shared development system), test, staging/acceptance and production. Or, more generically: be able to refactor your settings as you like, by simply "inheriting" from more generic settings using 'from ... import'. Compatibility with virtualenv ============================= Please note django-environments can be nicely used together with virtualenv, especially virtualenvwrapper's ``bin/postactivate`` script. Getting Started =============== This is a fully working Django project; you can copy files from it as needed to your own projects. To get django-environments working by itself, do the following: 1. Copy scripts/initenv_example to scripts/initenv. 2. Edit initenv and set ``PROJECT_ROOT``, ``DJANGO_PROJECT`` (always a subdirectory of ``PROJECT_ROOT``) and ``PROJECT_SETTINGS``. 3. Activate the environment using ``source scripts/initenv``. 4. When using virtualenv with virtualenvwrapper, you can do either ``source <path-to-project>/scripts/initenv`` from ``bin/postactivate``, or simply use your initenv's contents inside postactivate. If everything works okay, the following shell aliases are created: * cdroot - go to project root. * cdjango - go to Django project root (one lower than project root). * runserver - perform manage.py runserver with the correct settings. Using Apache mod_wsgi ===================== Should you wish to use the local settings in settings/env/local.py, simply copy the mysite/deploy/example.wsgi to mysite/deploy/local.wsgi, and add something like this to your httpd.conf:: WSGIPythonHome /Users/spanky/.virtualenvs/django-environments # Optional WSGIScriptAlias / /Users/spanky/repos/django-environments/mysite/deploy/local.wsgi The 'local' in local.wsgi will automatically make sure settings.env.local is used. Create other .wsgi files for other environment settings. Directories =========== * The ``mysite/settings`` directory replaces ``settings.py`` and contains the default settings in ``generic.py``, whose contents are imported in ``__init__.py``. * The ``mysite/settings/env`` directory contains the different settings files for every environment. * All .wsgi files in the ``mysite/deploy`` folder are normally equal; their respective filenames are used to determine which settings to import. * As discussed above, the scripts directory contains the shell scripts intended to be sourced with the ``source`` command. Remarks ======= * ``urls.py`` is just there to demonstrate the ``SERVE_MEDIA`` setting. * ``manage.py`` is just there to make this a complete Django project.