Django 1.10+
Gunakan atribut, bukan metode:
if request.user.is_authenticated: # <- no parentheses any more!
# do something if the user is authenticated
Penggunaan metode dengan nama yang sama tidak digunakan lagi dalam Django 2.0, dan tidak lagi disebutkan dalam dokumentasi Django.
Perhatikan bahwa untuk Django 1.10 dan 1.11, nilai properti adalah a
CallableBool
dan bukan boolean, yang dapat menyebabkan beberapa bug aneh. Sebagai contoh, saya memiliki pandangan yang mengembalikan JSON
return HttpResponse(json.dumps({
"is_authenticated": request.user.is_authenticated()
}), content_type='application/json')
bahwa setelah diperbarui ke properti request.user.is_authenticated
melempar pengecualian TypeError: Object of type 'CallableBool' is not JSON serializable
. Solusinya adalah menggunakan JsonResponse, yang bisa menangani objek CallableBool dengan benar saat membuat serial:
return JsonResponse({
"is_authenticated": request.user.is_authenticated
})