2013-08-01 5 views
0

Я пытаюсь написать функцию confirm, чтобы подтвердить регистрацию пользователем.User.DoesNotExist - значение исключения catch

Простая логика: пользователь регистрируется и получает электронное письмо. Во время регистрации я создаю хеш-значение, чтобы убедиться, что все пользователи имеют уникальное значение в моем db, и я отправляю электронное письмо пользователю с просьбой подтвердить регистрацию. И по ссылке подтверждения по электронной почте я помещаю это значение хеша в качестве идентификатора подтверждения для этой регистрации.

После того, как пользователь нажал, то эта функция будет называться:

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 :(, даже если значение хэша в БД и совпадает с адресом идентификатора.

Почему это? Могу ли я прочитать точное сообщение об исключении DoesNotExist?

Я много играл с моделью Пользователя и должен был восстановить старый db после удаления некоторых данных, сброса, сброса Юга и многих других вещей.

Может ли это быть причиной этой проблемы сейчас?

ответ

1

Дополнительная информация, безусловно, будет полезна (схема базы данных, код модели пользователя), но это даст вам текст исключения (что-то вдоль строк «Запрос соответствия пользователя не существует». Параметры поиска были {'uniq_hashed': 'c9b8568a4c19e74b5bddd05bd71caac1' } ").

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

отличная помощь .. благодаря мужчине – doniyor