2017-08-27 4 views
0

'myapp'には、私のカスタムUserモデルとOnetoOneField関係を共有するモデル 'Profile'があります。多くの私の見解では、ユーザーがプロファイルを設定しているかどうかを確認する必要があります。だから私はこの機能が含まれているモジュールのprofilecheck」を作成しました:Djangoビューのデータベースを照会するカスタム関数

def has_profile(req): 
    try:  
     profile = Profile.objects.get(user=req.user) 
     return profile 
    except: 
     return False 

私のviews.pyでは、私は次のようしている:

from myapp.utils.profilecheck import has_profile 
from myapp.models import Profile 

def viewprofile(request): 
    if has_profile(request): 
     context = { 
      'profile': has_profile(request) 
     } 
     return render(request, 'profile.html', context)   
    else: 
     return render(request, 'setup_profile.html', {}) 

ビューで呼び出されると、has_profile()常に返しますFalse。なぜどんなアイデア?

+0

Aamir Adnan –

+0

に対応して編集しました。 'print(Profile.objects.all())'に何が起こったのですか?あなたのプロフィールデータがまだ作成されていないか、ログインしていない可能性があります。 –

答えて

0

has_profile関数で未定義の変数を使用しようとしているためです。 request.userを使用しようとしていますが、requestが定義されていないため、except節にキャッチされた例外が発生し、Falseが返されます。has_profileのパラメータとしてリクエストを渡す必要があります。

+0

私はそれを試みましたが、それでもFalseを返します –

+0

'has_profile'関数をどのように更新したか、 。 –

+0

質問が編集されました。ご覧ください。 –

関連する問題