Know the environment
Use Linux with the "Terminator" shell.
Use a version control system.
Use virtualenv, for managing different versions of Python and dependencies, e.g.
virtualenv path --python=python2.7 --no-sites-packages system libs: ./configure --prefix=envpath ; export LD_LIBRARY_PATH=envpath/lib
Use yolk, handy tool to query pypi and status of pypi installed packages
yolk -l (to see installed packages) yolk -U (to see if there are updates on pypi) yolk -a
Use the bash autocomplete script.
try: from setting_local import *
setting_local.py shouldn't be shared or checked in.
Thanks to alias, from djangodevtools, you can simply create commands to do whatever you want, e.g. clean up rabbit queues. The commands are stored in a manage.cfg file that is shared.
uWSGI is an application server with many options. --auto-snapshot sounds quite interesting. It supports clustering. It'll be in the official Django deployment documentation from the next release (ticket 16057).
get_profile() tends to be a problem. It's possible to monkey patch the User.get_profile() method (to make sure a new profile is created if it doesn't exist) but you have to be careful where it's loaded. It's also possible to use a Meta proxy together with a new middleware (set up after the authentication middleware)
Django model form factory (django.forms.models.modelform_factory) sounds interesting to create forms more quickly.
There was an on-the-fly short talk on uWSGI after the talk, by someone whose name I didn't pick up. It can talk to many protocols, it has lots of plugins so you can only use what you need. It's not the fastest but speed isn't the main factor that should make you decide to use it.