2017-12-08 4 views
0

私が取り組んでいる新しいdjangoプロジェクトがあります。私はフレームワークに付属のDjangosユーザーログインとログアウトサービスを統合しています。ビューがあり、ビュー内でrequest.useruserオブジェクトがあるかどうかを確認したいと思っています。存在しない場合は、ログインページにリダイレクトします。 request.useruserがある場合は、ユーザーのホームページを表示します。これどうやってするの。あなたは、ユーザーが認証されているかどうかを確認する必要があります...ログインしている人がいるか確認してください。

+1

多くの例がありますhttps://stackoverflow.com/a/3644910/2282638 –

答えて

2
def home(request): 
    if not request.user.is_authenticated: 
     return redirect('login') 
    else: 
     User = request.user 
     profile = Profile.objects.get(user = User) 
     parameters = { 
      'user':User, 
      'profile':profile, 
     } 
     return render(request, 'user/home.html', parameters) 

のログイン

def home(request): 
    if not request.user: 
     return redirect('login') 
    else: 
     User = request.user 
     profile = Profile.objects.get(user = User) 
     parameters = { 
      'user':User, 
      'profile':profile, 
     } 
     return render(request, 'user/home.html', parameters) 

にログインしているユーザーが、doesntの仕事がある場合にユーザが存在しない場合、それは動作します:ここに私のコードですかどうか、あなたがチェックするとrequest.user Djangoはデフォルト

+1

['is_authenticated'](https://docs.djangoproject.com/en/dev/ref/contrib/auth/#django)に注意してください。 contrib.auth.models.User.is_authenticated)がDjango 1.10のメソッドではなく属性になりました。 –

+1

あなたがとにかくログインしていなければ返ってくるので 'else'は必要ありません –

1

ジャンゴprovides a decorator for thisとして匿名ユーザーを返します。

from django.contrib.auth.decorators import login_required 

@login_required 
def home(request): 
    # at this point you know you _always_ have an authenticated user 
    user = request.user 
    profile = Profile.objects.get(user=user) 
    context = { 
     'user':user, 
     'profile':profile, 
    } 
    return render(request, 'user/home.html', context) 
関連する問題