我在管理器中有一个功能,可以通过密钥激活用户帐户。提供密钥时,需要执行多项检查:密钥是否存在?密钥过期了吗?如果没有,经理将激活该帐户。
def activate(key):
try:
profile = self.get(key=key)
except self.model.DoesNotExist:
return None
if not profile.key_expired():
## Activate user
return user
return None
问题当然是,这对于“密钥不存在”和“给定的密钥已过期”都返回 False。对两者都给出 False 并不能告诉我上游的观点是什么问题。我不会做 404 错误,因为这对用户来说是不透明的,并且无济于事。
处理此问题以在上游提供更多有用信息的最佳/正确 django/pythonic 方法是什么?自定义错误是前进的方向吗?我应该为上游分析返回值吗(似乎是一个丑陋的解决方案)?还有其他方法吗?