User.DoesNotExist - 捕获异常值

时间:2013-08-01 15:05:17

标签: python django django-models

我正在尝试编写confirm函数来确认用户注册。

简单逻辑:用户注册并收到电子邮件。在注册期间,我创建哈希值以确保所有用户在我的数据库中具有唯一值,并且我向用户发送电子邮件,要求确认注册。在电子邮件中的确认链接中,我将该哈希值作为此注册的确认ID。

用户点击后,将调用此函数:

def confirm(request):
  hash_id = request.GET.get('id')
  try: 
    user = User.objects.get(uniq_hashed__exact=hash_id)
    user.confirmed = 'yes'
    email = user.email
    user.save()
    request.session['sess_id'] = hash_id
    message = "activated!"
    return render_to_response('danke.html',{'email':email},context_instance=RequestContext(request))
  except User.DoesNotExist: 
    sorry = "Sorry, you dont exist in our db :("
    return render_to_response('danke.html',{'danke':sorry},context_instance=RequestContext(request))

但是,即使哈希值在db中并且与url id匹配,我也总是得到Sorry, you don't exist in our db :(

这是为什么?我可以阅读DoesNotExist例外的确切消息吗?

我玩了很多用户模型,并且在删除一些数据后,必须恢复旧的数据库,重置,重置南方和许多其他事情。

这可能是现在出现这个问题的原因吗?

1 个答案:

答案 0 :(得分:1)

更多信息肯定会有用(数据库架构,用户模型代码),但这会让你获得异常文本(类似于“用户匹配查询不存在。查找参数是{'uniq_hashed':'c9b8568a4c19e74b5bddd05bd71caac1'} “)。

try:
    user = User.objects.get(uniq_hashed__exact=hash_id)
except User.DoesNotExist as exc:
    message = str(exc)