0

我正在尝试编写一个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))

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

为什么是这样?我可以阅读DoesNotExist异常的确切消息吗?

我经常使用 User 模型,在删除一些数据、重置、重置 South 和许多其他事情后不得不恢复旧数据库。

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

4

1 回答 1

1

更多信息肯定会很有用(数据库架构、用户模型代码),但这会给您提供异常文本(类似于“用户匹配查询不存在。查找参数为 {'uniq_hashed': 'c9b8568a4c19e74b5bddd05bd71caac1'}”)。

try:
    user = User.objects.get(uniq_hashed__exact=hash_id)
except User.DoesNotExist as exc:
    message = str(exc)
于 2013-08-01T17:08:57.247 回答