Я пишу функцию python для проверки токена из электронной почты. В электронном письме есть URL-адрес с его конечной точкой. У меня есть два параметра URL, токен и адрес электронной почты. В моей конечной точке я должен проверить:Использовать assert в нормальном коде
- если параметры в URL
- если есть ассоциированный маркер в базе данных
- , если она соответствует электронной почте пользователя
- если маркер остается в силе (истекает через 2 дня)
- , если она уже была использована
Я выбираю, чтобы обернуть все эти проверки в try except
блоке, я ж ill всегда возвращают ту же ошибку «недопустимый токен», поэтому мне не нужно точно проверять индивидуальную ошибку. Я использовал функцию assertFalse
и assertEqual
, что приведет к возникновению исключения, если оно неверно.
try:
# pull from url
email = request.GET['email']
value_token = request.GET['token']
# test if valid
token = EmailValidationToken.objects.get(token=value_token)
assertFalse(token.consumed)
assertEqual(email, token.user.email)
assertFalse(token.is_expired())
except:
pass # return error
Мне нравится, как я это делал, потому что это супер чистый. Это хорошая практика? Есть ли другое решение для этой проблемы?