2015-10-07 17 views
6

Tôi đã cố gắng sử dụng is_authenticated() trong chế độ xem, nhưng đã nhận được lỗi đối tượng `TypeError: 'bool' không thể gọi được. Tại sao tôi nhận được lỗi này và cách khắc phục?is_authenticated() tăng TypeError TypeError: đối tượng 'bool' không được gọi là

@auth.before_app_request 
def before_request(): 
    if current_user.is_authenticated() \ 
      and not current_user.confirmed \ 
      and request.endpoint[:5] != 'auth.' \ 
      and request.endpoint != 'static': 
     return redirect(url_for('auth.unconfirmed')) 
+0

thả dấu ngoặc đơn – hsfzxjy

+0

Xóa '()'. –

+0

cảm ơn sự giúp đỡ của bạn! – Gaoyang

Trả lời

6

Lỗi "đối tượng không thể gọi" xảy ra khi bạn đang cố xử lý một đối tượng như là phương thức hoặc hàm.

trong trường hợp này:

current_user.is_authenticated() 

bạn đang behaveing ​​current_user.is_authenticated như một phương pháp nhưng nó không phải là một phương pháp.

bạn phải sử dụng nó theo cách này:

current_user.is_authenticated 

bạn sử dụng "()" sau khi các phương pháp hoặc các chức năng, không phải đối tượng.

Trong một số trường hợp, một lớp học có thể thực hiện chức năng __call__ mà bạn cũng có thể gọi một đối tượng, sau đó nó sẽ được gọi.

8

Từ Flask-Login 0.3.0 (phát hành vào ngày 10 tháng 9 2015) thay đổi:

  • BREAKING: The is_authenticated , is_active , and is_anonymous members of the user class are now properties, not methods. Applications should update their user classes accordingly.

Vì vậy, bạn cần phải thay đổi lớp user của bạn và mã số cho phù hợp.

Các vấn đề liên quan