Django 1.10+
ใช้คุณลักษณะไม่ใช่วิธีการ:
if request.user.is_authenticated: # <- no parentheses any more!
# do something if the user is authenticated
การใช้วิธีการของชื่อเดียวกันนั้นเลิกใช้ใน Django 2.0 และไม่ได้กล่าวถึงในเอกสารประกอบของ Django อีกต่อไป
โปรดทราบว่าสำหรับ Django 1.10 และ 1.11 ค่าของคุณสมบัติคือ a
CallableBool
และไม่ใช่บูลีนซึ่งอาจทำให้เกิดข้อผิดพลาดบางอย่าง ตัวอย่างเช่นฉันมีมุมมองที่ส่งคืน JSON
return HttpResponse(json.dumps({
"is_authenticated": request.user.is_authenticated()
}), content_type='application/json')
ว่าหลังจากที่มีการปรับปรุงสถานที่ให้บริการถูกขว้างปาข้อยกเว้นrequest.user.is_authenticated
TypeError: Object of type 'CallableBool' is not JSON serializable
วิธีแก้ไขคือใช้ JsonResponse ซึ่งสามารถจัดการวัตถุ CallableBool ได้อย่างถูกต้องเมื่อทำการจัดลำดับ:
return JsonResponse({
"is_authenticated": request.user.is_authenticated
})