Объект 'AnonymousUser' не является итерационным
if not request.user.is_authenticated:
return None
try:
return ClientProfile.objects.get(user=request.user)
except ClientProfile.DoesNotExist:
return None
этот код должен возвращать None, если я не вошел в систему и не пытаюсь его вызвать. Но, как я вижу из stacktrace, он падает с ошибкой "объект" AnonymousUser "не является итерационным" в этой строке:
return ClientProfile.objects.get(user=request.user)
Я просматриваю следующую страницу в частном режиме, поэтому я на 100% не аутентифицирован.
Как исправить эту проблему?
1 ответов
в Django 1.9 и ранее, is_authenticated()
- это метод, вы должны вызвать его.
if not request.user.is_authenticated():
...
Это простая ошибка, чтобы забыть вызвать метод. В вашем случае это вызывает ошибку, но в других случаях это может позволить пользователям иметь доступ к данным, которые они не должны. Из Джанго 1.10, is_authenticated
изменяется на свойство, чтобы предотвратить это.