Django -- User.DoesNotExist 不存在?

37 投票
7 回答
28183 浏览
提问于 2025-04-15 11:32

我正在学习Django这个框架。我在Eclipse上使用Pydev工具。我写了一个简单的注册页面,但它无法正常工作。Eclipse提示说User.DoesNotExist是未定义的。很可能是我漏掉了什么简单的东西。以下是相关的代码部分:

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)
    ...

7 个回答

8

Pydev有一个解决办法,可以处理这种情况(当成员是在运行时定义的)。只需在引发警告的字符串末尾加上 #@UndefinedVariable(或者当光标在“DoesNotExist”上时,按下键盘上的 ctrl+1),这样就不会再出现警告了。

19

我刚发现Pydev其实有个不错的解决办法。

首先,去 窗口 > 偏好设置,然后找到 Pydev > 编辑器 > 代码分析

接着,点击 未定义 这个标签,在名为 将以下名称视为全局变量 的文本框里添加“DoesNotExist”。

27

问题其实出在PyDev上,而不是你的代码。你做的事情完全正确,但像Python这样的动态语言在IDE(集成开发环境)中总是会遇到一些困难,特别是在解析属性的时候。以DoesNotExist这个异常为例,它是通过__metaclass__添加的,而不是通过普通的对象继承方式,所以PyDev可能找不到它。不过,这个功能应该是可以正常工作的。

撰写回答