小编Dor*_*oux的帖子

在普通代码中使用assert

我正在编写一个python函数来验证来自电子邮件的令牌.在电子邮件中,有一个带有端点的URL.我有两个url参数,即令牌和电子邮件地址.在我的端点我必须检查:

  • 如果参数在URL中
  • 如果数据库中有关联令牌
  • 如果它对应于用户电子邮件
  • 如果令牌仍然有效(2天后过期)
  • 如果它已被使用

我选择将所有这些检查包装在一个try except块中,我将始终返回相同的错误"无效令牌",因此我不必精确检查个别错误.我使用了该函数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
Run Code Online (Sandbox Code Playgroud)

我喜欢我这样做的方式,因为它非常干净.这是一个好习惯吗?这个问题有其他解决方案吗?

python assert

1
推荐指数
1
解决办法
444
查看次数

标签 统计

assert ×1

python ×1