복붙노트

[PYTHON] Flask-Login은 TypeError를 발생시킵니다 : is_active 속성을 덮어 쓰려고 할 때 'bool'객체를 호출 할 수 없습니다.

PYTHON

Flask-Login은 TypeError를 발생시킵니다 : is_active 속성을 덮어 쓰려고 할 때 'bool'객체를 호출 할 수 없습니다.

Flask-Login에서 is_active를 수정하여 사용자가 항상 활성화되지 않도록하고 싶습니다.

기본값은 항상 True를 반환하지만 금지 된 열의 값을 반환하도록 변경했습니다.

문서에 따라 is_active는 속성이어야합니다. 그러나 내부 Flask-Login 코드는 다음을 발생시킵니다.

TypeError: 'bool' object is not callable 

is_active를 사용할 때.

is_active를 올바르게 사용하여 일부 사용자를 비활성화하려면 어떻게합니까?

class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    banned = db.Column(db.Boolean, default=False)

    @property
    def is_active(self):
        return self.banned
login_user(user, form.remember_me.data)

if not force and not user.is_active():
TypeError: 'bool' object is not callable

해결법

  1. ==============================

    1.is_active, is_anonymous 및 is_authenticated는 Flask-Login 0.3의 모든 속성입니다. 그것들을 사용하고 싶다면 그것들을 속성으로 취급하고, 호출하지 마십시오. 그것을 오버라이드하고 싶다면 @property로 꾸미는 것을 잊지 마십시오.

    is_active, is_anonymous 및 is_authenticated는 Flask-Login 0.3의 모든 속성입니다. 그것들을 사용하고 싶다면 그것들을 속성으로 취급하고, 호출하지 마십시오. 그것을 오버라이드하고 싶다면 @property로 꾸미는 것을 잊지 마십시오.

    # change from
    current_user.is_authenticated()
    # to
    current_user.is_authenticated
    

    가장 최근 버전 (0.3)에 대한 문서를 읽고 있지만 이전 버전의 라이브러리를 사용하고있는 것으로 보입니다. 버전 0.3에는 이러한 속성을 메소드에서 속성으로 변경하는 주요 변경 사항이 포함되어 있습니다. Flask-Login의 최신 버전으로 업그레이드하여 속성으로 처리해야합니다.

    is_active 속성이 False를 반환하도록하여 사용자를 비활성화합니다. 열의 값을 반환하는 것이 좋습니다.

  2. ==============================

    2.자신의 논리를 구현하기 위해 is_active를 오버로드합니다.

    자신의 논리를 구현하기 위해 is_active를 오버로드합니다.

    그게 뭐가 잘못 됐어? IMO는 없다. @property 데코레이터를 사용하여 속성을 만드는 것을 잊은 것을 제외하고는 정확합니다.

    토네이도에서는 current_user와 비슷합니다.

  3. from https://stackoverflow.com/questions/32750526/flask-login-raises-typeerror-bool-object-is-not-callable-when-trying-to-overr by cc-by-sa and MIT license