Django Bash completion

03 Aug 2012 by Yuri Prezument

A couple of days ago, while browsing the Django repository on Github, I discovered the django_bash_completion script (only took me 2 years to find it). Shortly after the mind=blown moment, I tested it and was amazed by the results, or rather by the fact that I never knew it existed, although it's referenced in the docs.

Installation was really simple, and outlined in the script itself:

# Testing it out without installing
# =================================
# To test out the completion without "installing" this, just run this file
# directly, like so:
#     . ~/path/to/django_bash_completion
# Note: There's a dot ('.') at the beginning of that command.
# After you do that, tab completion will immediately be made available in your
# current Bash shell. But it won't be available next time you log in.
# Installing
# ==========
# To install this, point to this file from your .bash_profile, like so:
#     . ~/path/to/django_bash_completion
# Do the same in your .bashrc if .bashrc doesn't invoke .bash_profile.
# Settings will take effect the next time you log in.

The result:

$ python [TAB]
cleanup           diffsettings      inspectdb         runfcgi           sqlall

Since I have Django projects deployed on almost every VPS that I access, I decided to write a small script to install it on a remote machine easily.



mkdir $DIR
wget -P $DIR
echo -e "\n\n#Django bash comletion:\nsource $DIR/django_bash_completion" >> ~/.bashrc

And execute it via:

cat | ssh


  • Yes, I know that Zsh auto-completes Django management commands (and much more), but I prefer to stick with Bash for now.
  • The script is located at site-packages/django/extras when you install Django. But I wanted something more generic as it's located in different virtualenvs on every machine.