2016-05-25 11 views
6
if not request.user.is_authenticated: 
    return None 

try: 
    return ClientProfile.objects.get(user=request.user) 
except ClientProfile.DoesNotExist: 
    return None 

私がログインしていない場合は、このコードはNoneを返します。私は、スタックトレースから見るようにしかし、それは、この行に「『AnonymousUser』オブジェクトが反復可能ではありません」というエラーでクラッシュ:'AnonymousUser'オブジェクトは反復可能ではありません

return ClientProfile.objects.get(user=request.user) 

私はプライベートモードで次のページを閲覧していますので、私は100%が認証されていませんよ。

この問題を解決するにはどうすればよいですか?

答えて

9

Django 1.9以前では、is_authenticated()を呼び出す必要があります。

if not request.user.is_authenticated(): 
    ... 

このメソッドを呼び出すのは間違いです。あなたのケースでは、それはエラーを引き起こしますが、それ以外の場合には、ユーザーはそうしてはならないデータにアクセスすることができます。 Django 1.10から、これを防ぐためにis_authenticatedがプロパティに変更されています。

+0

ああ、ありがとう。テンプレートコードからコピー貼り付け:) – arts777

関連する問題