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

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

Bu kod, oturum açmamış ve onu aramaya çalışmazsa None değerini döndürmelidir. Ben stacktrace gördüğümüz gibi Ancak, bu hat üzerinde " 'AnonymousUser' nesne iterable değil" hatasıyla çöküyor:'AnonymousUser' nesnesi yinelenen değil

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

Ben özel modda aşağıdaki sayfayı gezen, o yüzden% 100 doğrulanmış değilim .

Bu sorun nasıl giderilir?

cevap

9

Django 1.9 ve daha önceki sürümlerde, is_authenticated() bir yöntemdir, onu çağırmalısınız.

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

Yöntemi çağırmayı unutmak kolay bir hatadır. Durumunuzda bir hataya neden oluyor, ancak diğer durumlarda kullanıcıların vermemeleri gereken verilere erişmelerine izin verebilir. Bunu önlemek için Django 1.10'dan is_authenticated bir mülke dönüşüyor.

+0

Oh, teşekkürler. Şablon kodundan kopyala yapıştırılmış :) – arts777