2012-02-07 1 views
1

私は、キーを介してユーザーアカウントをアクティブにする機能をマネージャーに持っています。キーが提供されるとき、いくつかのチェックが実行される必要があります:キーは存在しますか?キーは期限切れですか?そうでない場合、マネージャはアカウントをアクティブにします。Django:例外と戻り値、複数の潜在的な状況を処理する正しい方法は何ですか?

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エラーはしません。

上流/より有用な情報を与えるためにこれを処理する最良の/正しいジャンゴ/ピジョンの方法は何ですか?カスタムエラーは先進的ですか?私はアップストリーム分析の値を返すべきですか(醜い解決策のようです)?別の方法がありますか?

答えて

1

私はactivateの内側で例外を発生させ、外側にキャッチします。

def activate(key): 
    try: 
     profile = self.get_query_set().get(key=key) 
    except self.model.DoesNotExist: 
     raise 

    if profile.key_expired(): 
     raise YourCustomException() 
     # or simply return False 

    ## Activate user 
    return user 

また、私はそのためのself.get_query_set().get(key=key)代わりのself.get(key=key)

+0

おかげで使用することをお勧めしたい - 。self.get_query_set()についての取得(キー=キー)この理由は何ですか? – jvc26

関連する問題