A short command which replaces calls to Django's manage.py scripts
Project description
Django-dj is a console command which removes the need to use Django’s manage.py script.
Old way
$ django-project> python manage.py runserver/syncdb/etc
$ django-project/some/dir> python ../../manage.py runserver/syncdb/etc
New Way
$ django-project> dj runserver/syncdb/etc
$ django-project/some/dir> dj runserver/syncdb/etc
Instead of carefully referencing manage.py from whichever directory you happen to be in, dj works anywhere in or under your Django project directory. You can even completely remove your manage.py file if you wish.
dj identifies Django projects by looking for directories containing __init__.py, settings.py and urls.py.
Installing
With pip, run the command:
sudo pip install django-dj
Or with easy_install run:
sudo easy_install django-dj
Alternatively, you can manually install by copying the dj file to somewhere on your $PATH, perhaps ~/bin/.
How dj finds Django projects
As mentioned above, dj identifys Django projects by looking for directories containing the following files:
__init__.py
settings.py
urls.py
If a directory contains all 3 files then dj takes it to be a Django project and tries to run Django’s management tool on it.
Search Strategy
The directories dj looks in are chosen as follows. The search starts in the working directory this script is executed from and moves upwards to the parent directory, and then the parent’s parent directory and so forth until either a Django project is found, or the root of the filesystem is reached.
If a file named .djangoproject is encountered during the search, a complete search of the subtree at the directory holding the .djangoproject file is triggered.
Invoking dj from sibling directories of a Django project
The strategy of looking through the parent directories works well so long as long as dj is executed from a child directory of the Django project. Consider the following project structure:
myproject/ |-- staticfiles/ |-- somefile.jpg |-- somefile.png |-- somefile.gif |-- django-project/ |-- urls.py |-- settings.py |-- __init__.py
If you run dj from inside staticfiles, it won’t find django-project because it will just check parents of staticfiles, and django-project is not a parent of staticfiles. You can make dj find django-project by creating an empty file called .djangoproject in in a common parent of staticfiles and django-project. In this case creating it in myproject would work. This will tell dj to do a full search of all directories under myproject rather than just its parents.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.