I'm trying to get hold of Django. I use Pydev on Eclipse. I have written a simple signup page that I can't get to work. Eclipse complains that User.DoesNotExist is undefined. Most likely, I am missing something trivial. Here's the relevant portion of the code:
from django.contrib.auth.models import User ... class SignUpForm (forms.Form): ... def clean_username (self): try: User.objects.get(username=self.cleaned_data['username']) except User.DoesNotExist: return self.cleaned_data['username'] raise forms.ValidationError(USERNAME_ALREADY_IN_USE) ...
The problem is really with PyDev, not your code. What you have done is absolutely correct, but IDEs will always have difficulty resolving attributes in a dynamic language like Python. In the case of the DoesNotExist exception, it is added via a
__metaclass__ rather than through normal object inheritance, so PyDev is unlikely to be able to find it. However, it should definitely work.
I just discovered Pydev actually has a nice workaround for this.
Go to Window > Preferences, then Pydev > Editor > Code Analysis.
Click the Undefined tab and add "DoesNotExist" to the text box titled Consider the following names as globals.