2017-05-02 1 views
2

Flask의 route 메서드에서 decorator은 언제 실행됩니까? 특히 self.add_url_rule()이 언제 실행되는지 알고 싶습니다. root_of_app 처음 웹 요청에 의해 호출 될 때플라스크의 경로 데코레이터는 언제 실행됩니까?

from flask import Flask 
app = Flask(__name__) 
@app.route("/") 
def root_of_app(): 
    load_root_of_app() 

add_url_ruleroot_of_app을 포함하는 모듈이 처음 가져올 때 실행, 또는인가? 당신은 route 장식에 인쇄 문을 추가하여이 자신을 확인할 수 있습니다

def route(self, rule, **options): 
    def decorator(f): 
     endpoint = options.pop('endpoint', None) 
     self.add_url_rule(rule, endpoint, f, **options) 
     return f 
    return decorator 

답변

3

: 여기

route 기능에 대한 소스입니다.

route을 호출하면 데코레이터가 빌드됩니다. 그런 다음 데코레이터를 호출하여 뷰에 적용됩니다. 가져 오기가 모듈 수준의 코드를 실행하기 때문에 두 가지 모두 가져 오기에서 발생합니다.

@app.route()보기를 사용하면 첫 번째 요청까지 지연되지 않습니다. 청사진 버전은 route이며, 청사진이 앱에 등록 될 때까지 연기되며, 이는 첫 번째 요청 이전에도 발생합니다.

+0

감사합니다. 방금이 답변으로 내 질문을 업데이트하려면 로그온했습니다. 혼란은'@ app.route()'와'@ app.route' ('()'제외)의 차이점을 보지 못했습니다. (@ app.route ("/")'와 같이) 실행 된 함수로 데코 레이팅하는 것은 [_italic_]로 장식하는 반면, 함수 핸들 (예 :'@ app.route') ] (그 함수의 출력). 감사합니다. @davidism! –

관련 문제