2011-12-02 54 views
2

我希望能够在用户尝试注册但是注册失败时向用户返回消息。 我已经尝试了所有下面的方法:如何捕获/注册Django注册错误?

try: 
    user = User.objects.create_user(username, email, password) 
    except User.DoesNotExist 
    print "aaaa" 

    try: 
    user = User.objects.create_user(username, email, password) 
    except IntegrityError 
    print "aaaa" 

当然,无论是上述的工作。我如何正确抛出异常?

+0

什么会导致注册失败? –

+0

您应该以'clean'形式执行此操作,然后引发'ValidationErrors',并在窗体重新加载时向用户显示错误消息。 –

回答

0

我前一段时间有同样的问题,这是我的解决方案:

try: 
    user = User.objects.get(username=new_username) 
    # ERROR! user already exists! 
    # if you're using a form you could do: 
    # raise forms.ValidationError('Already exists a user with this username!')   
except User.DoesNotExist: 
    # We're good!, lets create the user 
    user = User.objects.create_user(username, email, password) 
0

我建议使用The Messages Framework

此外,我无法想象创建用户投掷DoesNotExist。整个想法是,用户不存在,所以如果这是抛出,有一些严重的问题正在进行。

请注意,消息框架的默认后端是针对会话存储消息,这对注册不起作用(因为没有用户登录),所以我建议看看其中一个后端。