작성
·
272
0
안녕하세요. 블로그 구독 기능 구현하기 강의 13분 50초 경에 밑의 blog_abtest.py 파일에서 load_user 함수에 user_id 인자는 flask login이 http request에서 자동으로 id 추출한다고 하셨는데 궁금한 게 있습니다.
1. 추출되는 대상은 User(UserMixin)에서 만든 user 객체인가요 ?
2. 자동으로 id를 추출한다고 했는데 만약 대상이 id가 아닌 다른걸로 하고 싶다면 어떻게 설정하나요? 예를 들어 email을 받아서 User.get함수에서 인자로 사용하고 싶다거나?
@login_manager.user_loader
def load_user(user_id):
return User.get(user_id)
답변 1
1
안녕하세요. 답변도우미입니다.
1. 추출대상은 User.get() 의 리턴값인 User 객체입니다. 다음 실제 User 클래스를 보시면 이해하실 수 있지 않을까 합니다.
@staticmethod
def get(user_id):
mysql_db = conn_mysqldb()
db_cursor = mysql_db.cursor()
sql = "SELECT * FROM user_info WHERE USER_ID = '" + str(user_id) + "'"
# print (sql)
db_cursor.execute(sql)
user = db_cursor.fetchone()
if not user:
return None
user = User(user_id=user[0], user_email=user[1], blog_id=user[2])
return user
2. email 로 User 객체를 가져오고 싶다면, 별도로 이와 관련한 메서드를 구현해야할 것 같은데요. 아마도 유사한 메서드가 다음 User 의 find 메서드가 아닐까 하는데요. 이와 같이 별도로 메서드를 구현하면 될 것 같습니다.
def find(user_email):
mysql_db = conn_mysqldb()
db_cursor = mysql_db.cursor()
sql = "SELECT * FROM user_info WHERE USER_EMAIL = '" + \
str(user_email) + "'"
# print (sql)
db_cursor.execute(sql)
user = db_cursor.fetchone()
if not user:
return None
user = User(user_id=user[0], user_email=user[1], blog_id=user[2])
return user
감사합니다.