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인 요청전에 애플리케이션 컨텍스트 영역으로 "한글" 이라는 값을 가지고 모든 요청이 처리가 됨