Flask 프레임워크의 디자인 이념
프로그램 및 요청 컨텍스트
Flask 서버가 클라이언트로부터 요청을 받았을 때, 보기 함수가 제출한 폼 같은 대상에 접근할 수 있도록 해야 요청을 처리할 수 있습니다.
request
object는 클라이언트가 보낸 HTTP
요청을 봉인한 좋은 예이다Things get more complicated if you consider that the request object is not the only object that view functions might need to access to fulfill a request.
따라서 보기 함수가 요청 대상에 접근할 수 있도록 하려면 보기 함수에 매개 변수로 전송하는 것이 뚜렷하지만, 이로 인해 프로그램의 모든 보기 함수에 매개 변수가 추가될 수 있다.접근
을 제외하고, 보기 함수가 요청을 처리할 때 다른 대상에 접근해야 한다면, 상황은 더욱 나빠질 것입니다.To avoid cluttering view functions with lots of arguments that may or may not be needed, Flask uses contexts to temporarily make certain objects globally accessible. Thanks to contexts, view functions like the following one can be written:
그래서 대량의 있어도 되고 없어도 되는 매개 변수가 보기 함수를 엉망으로 만드는 것을 피하기 위해 Flask는
contexts
(상하문)를 사용하여 일부 대상을 임시로 전역적으로 접근할 수 있도록 한다.from flask import request
@app.route('/')
def index():
user_agent = request.headers.get('User-Agent')
return 'your browser is %s
' % user_agent
이 보기 함수에서 우리는
request
를 전역 변수로 사용하는데 사실상 request
는 전역 변수일 수 없다.다중 스레드 서버에서 여러 개의 스레드가 서로 다른 클라이언트가 보내는 서로 다른 요청을 동시에 처리할 때 각 스레드가 보는
request
대상은 반드시 다르다.contexts
(상하문) Flask
중의 특정한 변수를 한 라인에서 전역적으로 접근할 수 있게 하고 다른 라인에도 영향을 주지 않는다.응용 프로그램 컨텍스트에 대한 공식 문서의 설명을 살펴보겠습니다.
The Application Context: Flask 뒤에 있는 디자인 이념 중 하나는 코드가 실행될 때 두 가지 다른'상태'(states)에 있다는 것이다.
Flask
대상이 실례화된 후에 모듈 차원에서 응용하면 은밀하게 응용 설정 상태에 있다.첫 번째 요청이 이 상태에 이르러서야 은근히 끝났다.두 번째 상태, 두 번째 상태에 중점을 두고 요청을 처리할 때 몇 가지 다른 규칙이 있습니다.request contexts
이 압축될 때 필요하면 응용 프로그램 위아래 문장이 함께 만들어집니다.이 때문에, 네가 그것을 필요로 하지 않는 한, 너는 상하 문장의 존재를 무시할 수 있다.두 번째는 앱을 현시적으로 호출하는context () 방법:from flask import Flask, current_app
app = Flask(__name__)
with app.app_context():
# within this block, current_app points to app.
print current_app.name
The Request Context
request_context()
방법은 새로운 Request Context 대상을 되돌려주고 with 성명과 결합하여 위아래 문장을 연결합니다.같은 라인에서 호출된 모든 것들은 with 성명이 끝날 때까지 전역 요청 변수 (flask.request 및 기타) 에 접근할 수 있습니다.컨텍스트 내부 작업을 스택처럼 요청합니다.스택 상단은 현재 활성 요청입니다.push () 는 위아래 문장을 창고 위에 추가하고 pop () 는 창고에서 옮깁니다.출고 시 적용되는teardownrequest () 함수도 실행됩니다.
또 하나 주의해야 할 것은 위아래 문장이 창고에 눌려 들어갈 때 현재 응용되고 있는 응용 프로그램의 위아래 문장이 없으면 자동으로 응용 프로그램의 위아래 문장을 만들 수 있다는 것이다.
Flask는 요청을 배달하기 전에 프로그램과 요청 상하문을 활성화(또는 푸시)하고 요청 처리가 끝난 후에 삭제합니다.프로그램 상하문이push되면 라인에서 상응하는 변수
current_app
,g
를 사용할 수 있습니다. 유사하게 요청한 상하문이push되면 request
와session
를 사용할 수 있습니다. 만약에 사용할 때 우리가 활성화application contexts
하지 않았거나request contexts
하면 오류가 발생할 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.