web/flask

플라스크 객체 g

JongSeok_12 2019. 11. 18. 20:46

플라스크는 기본적으로 제공해주는 기능들이 존재함 

기본으로 제공해주는 기능들을 다룰려고 함

Global Object : g

from flask import g

플라스크라는 모듈에서 g라는 전역 변수를 받음

관련 내용은 다음과 같음

from flask import Flask,g


app = Flask(__name__)
app.debug = True # 이제부터 app.~~ 형식으로 필요한 부분을 하나씩 추가하면 됨

@app.before_request
# request 요청을 처리하기전에 한번 어떠한 동작을 해달라고 하는 부분
# 즉 어떠한 요청이 들어오더라도 before_request는 무조건 한번 타게 됨
def before_requset():
    print("before_request!!!")
    g.str = "한글"
    # 웹 애플리케이션은 context라는 것을 가짐
    # 애플리케이션이 실행 될때는 어떠한 영역을 가짐
    # 그중에는 애플리케이션 컨텍스트라는 영역과 비교되는 세션 컨텍스트라는 영역이 존재
    # 세션 컨텍스트는 해당 웹 애플리케이션으로 들어오는 하나의! 브러우저로 부터 들어오는 요청을 뜻함
    # 애플리케이션 컨텍스트는 해당 웹 애플리케이션으로 들어오는 모든 불특정 다수의 브라우저 요청을 뜻함
    # 이중 g라는 것은 애플리케이션 컨텍스트의 영역임
    # 애플리케이션 컨텍스트 = 모든 사용자가 공유
    # 세션 컨텍스트 = 한명의 사용자만 공유 ( 로그인정보 )
@app.route("/")
def helloworld():
    return "hello world" + getattr(g, 'str', '111')

 

위와 같이 g라는 객체를 사용하면 불특정 다수의 모든 사용자들을 제어할 수 있음

 

g객체 사용 예시

  • A라는 사람이 모든 사람이 보아야할 단톡방을 생성할 때 만약 A라는 사람과 단톡방에서 대화를 하려면 다른 사용자들은 A의 서버와 같은 곳에 접속을 해있어야함
  • 이런 경우에 g객체를 사용해서 A 라는 사람이 있는 서버로 안내를 해준다면 모든 사용자는 A와 같은 서버로 들어 올 수 있음
  • 즉 before_request로 g객체를 사용해서 "한글" 이라는 값을 주었다면
  • 접속하는 모든 사용자는 before_request인 요청전에 애플리케이션 컨텍스트 영역으로 "한글" 이라는 값을 가지고 모든 요청이 처리가 됨