Django 1.10+
Sử dụng một thuộc tính, không phải là một phương thức:
if request.user.is_authenticated: # <- no parentheses any more!
# do something if the user is authenticated
Việc sử dụng phương pháp cùng tên không được chấp nhận trong Django 2.0 và không còn được đề cập trong tài liệu Django.
Lưu ý rằng đối với Django 1.10 và 1.11, giá trị của tài sản là một
CallableBoolvà không phải là boolean, có thể gây ra một số lỗi lạ. Ví dụ: tôi đã có một khung nhìn trả về JSON
return HttpResponse(json.dumps({
"is_authenticated": request.user.is_authenticated()
}), content_type='application/json')
rằng sau khi cập nhật vào tài sản request.user.is_authenticatedđã ném ngoại lệ TypeError: Object of type 'CallableBool' is not JSON serializable. Giải pháp là sử dụng JsonResponse, có thể xử lý đúng đối tượng CallableBool khi tuần tự hóa:
return JsonResponse({
"is_authenticated": request.user.is_authenticated
})