1

私はマネージャーにキーを介してユーザーアカウントをアクティブ化する機能を持っています。キーが提供された場合、いくつかのチェックを実行する必要があります。キーは存在しますか?キーの有効期限が切れていますか?そうでない場合は、マネージャーがアカウントをアクティブ化します。

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エラーはユーザーには不透明であり、問​​題を解決しないため、私は404エラーを実行しません。

上流でより有用な情報を提供するためにこれを処理するための最良/正しいdjango/pythonicの方法は何ですか?カスタムエラーは今後の方向性ですか?上流の分析のために値を返す必要がありますか(醜い解決策のようです)?別の方法はありますか?

4

1 に答える 1

0

アクティブ化の内部で例外を発生させ、外部でそれをキャッチします。

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)

于 2012-02-07T18:26:21.720 に答える