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.
Pydev has a workaround for such cases (when the members are defined at runtime). Just add #@UndefinedVariable at the end of the string which cause the warning (or ctrl+1 on keyboard when the cursor is at "DoesNotExist"), and it won't complain.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With