2011-02-21 10 views
0

ここでは初心者からPython(2.6)とDjango(1.2)まで、ロープを学びます。 @login_requiredと一緒にメソッドで使用したい次のデコレータを考えてみましょう。これらのデコレータは、「最小限の情報が提供された」プロファイルが必要なものを試して実行すると、ユーザーをプロファイル完了URLにリダイレクトします。Djangoデコレータは、SiteProfileNotAvailableエラーを生成します

使用パターンがあることを意図している次のようにmin_profile_requiredデコレータの私の現在のdefintionがある

@login_required 
@min_profile_required 
def my_view(request): 
    # do whatever. 

def min_profile_required(decorated_view): 
    @wraps(decorated_view) 
    def redirector(request, *args, **kwargs): 
     if ProfileHelper.is_min_profile_complete(request.user): 
      return decorated_view(request, *args, **kwargs) 
     return HttpResponseRedirect(PROFILE_COMPLETION_URL) 
    return redirector 

を私には、これは、Python 101のビットのように感じますが、 Djangoはまったく好きではありません。次のエラーがデコレータは、「アカウント」アプリケーションの一部であるので、AUTH_PROFILE_MODULE設定はアプリケーションの一部ではないデコレータ定義が属する(または上で使用される)

SiteProfileNotAvailable at ... 
app_label and model_name should be separated by a dot in the AUTH_PROFILE_MODULE setting 

生成されます。

私はこれが簡単であるべきだと思うので、私は紛失しているかもしれません。おそらく「チェーン」デコレータに関連していますか?

ご協力いただきありがとうございます。

更新:プロフィール設定はこちらです。下記の供給

AUTH_PROFILE_MODULE = 'cta.account.models.user_profile.UserProfile' 

回答:マイプロファイルモデルが正しく構成された、それはあなたがあなたのsettings.pyに設定間違ったプロファイルを持っていることを、そうです私にとって

AUTH_PROFILE_MODULE = 'account.UserProfile' 

答えて

3

されている必要があります。それは次のようになります:<app>.<model>そしてそれはまさにdjangoが苦情を申し立てているものです。あなたの設定を確認してください。

+0

egads!私はデコレータを書いていて、私の目の前にあったものを無視しているという事実に目を閉じていました。 –

+0

アプリが 'myapps.account'の場合はどうなりますか? 例:settings.INSTALLED_APPS'の「myapps.account」 –

+0

ありがとうございます。私は愚かに '.modelsを持っていました。 '。 – styts