• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    해결됨

flask_ABTest 코드 관련 질문드립니다.

21.01.04 00:33 작성 조회수 119

1

안녕하세요 

제가 현재 제공해주신 자료의 00_projects>04_flask_ABTest 코드를 기준으로 복습을 시작하였습니다.

관련하여 코드에 print문을 사용하여 확인중이나 애매한 부분이 있어서 아래와 같이 질문드립니다.

1. ABTEST용 Flask서버는 다중 HTTP Request를 동시에 처리하는게 아니라 한번에 하나의 HTTP Request만 처리 하는것 같은데 맞는지요?

2. current_user 객체를 호출 시마다(current_user.id, current_user.authenticated등,,,) blog_abtest.py 파일의 @login_manager.user_loader에 정의된 load_user()함수가 자동으로 실행되는지요?

3. flask_login에서 사용자가 로그인하면, 로그인 정보를 User class 에서 객체로 가져오고, LoginManager() 에 추가하여 세션 생성되고 current_user 객체에 해당 객체가 저장되는 과정 관련 질문

- LoginManager()에 추가하여 세션 생성하는 부분은 어떤 코드 부분에서 수행 되는지요?

- current_user 객체에 해당 객체가 저장되는 과정은 별도의 코드 없이 import current_user만 하면 알아서 수행이 되는것인지요?

감사합니다.

강의와 관련있는 질문을 남겨주세요.
• 강의와 관련이 없는 질문은 지식공유자가 답변하지 않을 수 있습니다. (사적 상담, 컨설팅, 과제 풀이 등)
• 질문을 남기기 전, 비슷한 내용을 질문한 수강생이 있는지 먼저 검색을 해주세요. (중복 질문을 자제해주세요.)
서비스 운영 관련 질문은 인프런 우측 하단 ‘문의하기’를 이용해주세요. (영상 재생 문제, 사이트 버그, 강의 환불 등)

질문 전달에도 요령이 필요합니다.
• 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요.
• 강의실 페이지(/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다.
• 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재해주세요. 
• 수업 특정 구간에 대한 질문은 꼭 영상 타임코드를 남겨주세요!

구체적인 질문일수록 명확한 답을 받을 수 있어요.
• 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요.
• 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요.
• 정확한 질문 내용과 함께 코드를 적어주시거나, 캡쳐 이미지를 첨부하면 더욱 좋습니다.

기본적인 예의를 지켜주세요.
• 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다. 
• 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요. 
반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용은 스팸 처리 등 제재를 가할 수 있습니다. 

답변 1

답변을 작성해보세요.

1

안녕하세요.

질문이 많아서, 제가 한번에 잘 이해하고, 답변이 되는 것인지는 잘 모르겠습니다. 간략히 제가 질문을 이해하는 선에서 답변드립니다.

1. flask 서버에 여러 접속이 있다면, 각기 동작을 해서 HTTP Request 를 각기 처리할 수는 있습니다. (물론 별도 서버 설정이 추가로 필요하겠지만, 기본적으로는 그렇습니다.)

2. 말씀하신 부분들은 영상에서 설명을 하는 부분이라서요. 이를 다시 질문하셔서, 댓글로 설명한들 그게 더 와닿는 것인지는 의문이 있습니다. 제 생각에는 관련 영상을 다시 보시는 편이 이해에 도움이 될 것 같습니다.

코드상에서 blog_abtest.py 에서 LoginManager() 로 초기화하고요. 이후 flask 로 접속하면, flask_login 라이브러리에서 내부적으로 세션이 생성됩니다. current_user 객체도 세세하게 관련 영상에서 설명을 드리는 부분인데요. 이 부분을 댓글로 간단히 설명드리는 것은 무리가 있어보여요. 기본적으로 별도 코드없이 사용자 정보를 해당 객체를 통해 가져올 수 있습니다. 

# User session management setup
login_manager = LoginManager()
login_manager.init_app(app)
login_manager.session_protection = "strong"

전체 코드를 여러 단계로 나눠서 각각의 한줄한줄이 어떤식으로 동작하는지, 세세하게 설명을 드리고 있어서요. 이런 부분은 영상을 통해서 그 단계를 따라가시면서 이해하셔야 이해할 수 있습니다. 이 부분 확인 부탁드립니다.