https://docs.djangoproject.com/en/dev/topics/auth/
Django by default uses the PBKDF2 algorithm, which is better than nothing/md5/no salt sha1.
I'd use bcrypt or scrypt by default, better be safe than sorry.
It's also better than salted sha1 since it performs multiple iteration rounds leading to (configurable) higher computational complexity.
From exactly where did you derive the idea that PBKDF2 is "extremely good"?
The reality is that all three of PBKDF2, bcrypt, and scrypt are just fine. But PBKDF2 and scrypt have drastically poorer library support than bcrypt; nobody should delay using a strong password hash so that they can optimize which one they use.
There is virtually no "rigorous" research into KDFs of any sort, let alone password KDFs. Most academic crypto research simply presumes passwords are taken from cryptographically secure random number generators and stored securely.
And with that said I want to remind you that I just cited a source, accepted at Usenix, that measured PBKDF2, bcrypt, and scrypt and found PBKDF2 inferior to bcrypt. You seem to want to pretend otherwise.
If Colin has a paper on it then I trust his comparison. What I really meant to say is what you said: all three are just fine.
Also, I thought I remembered my comment's parent saying something stronger, either it was edited later, or I was drunk when I decided it was worth commenting on.
You could literally flip a coin to decide between bcrypt and PBKDF2 and it wouldn't matter which side came up.