2016-09-08 1 views
7

대 ('응용 프로그램'), 단일 모듈를 사용하는 경우 __name__를 사용하는 것이 좋습니다 :플라스크 플라스크 (__ name__) 공식 <a href="http://flask.pocoo.org/docs/0.11/quickstart/#a-minimal-application" rel="noreferrer">Quickstart</a>에서

    1. 을 ... 단일 모듈을 사용하는 경우 (이 예와 같이) 응용 프로그램으로 시작했는지 아니면 모듈로 가져 왔는지에 따라 ( '__main__' 대 실제 가져 오기 이름)이기 때문에 __name__을 사용해야합니다.

      그래서 당신이 제공하는 무엇을 중요 : 내 응용 프로그램이 패키지 때 ...

  • 그러나, 그들의 API document에서, 하드 코딩하는 것이 좋습니다. 단일 모듈을 사용하는 경우 __name__은 항상 올바른 값입니다. 그러나 패키지를 사용하는 경우 일반적으로 패키지의 이름을 하드 코드 해 두는 것이 좋습니다.

    왜 내 패키지의 이름을 하드 코딩하는 것이 더 나은지 알 수 있지만 왜 단일 모듈의 이름을 하드 코딩하지 않습니까? 또는 __main__을 첫 번째 매개 변수로 사용하면 어떤 정보를 Flask이받을 수 있습니까? Flask가 리소스를 쉽게 찾을 수있는 방법을 알 수는 없습니다 ...

    답변

    7

    __name__은 앱이 정의 된 장소의 가져 오기 이름을 가져 오는 편리한 방법입니다. Flask는 패키지, 패키지를 사용할 때 __init__.py에 앱을 정의하면 __name__이 여전히 "올바른"위치를 가리킬 것입니다 (가져 오기 이름을 사용하여 리소스, 템플릿, 정적 파일, 인스턴스 폴더 등을 찾습니다). 자원은 있습니다. 그러나 mypackage/app.py과 같이 다른 곳에 정의하면 __name__을 사용하면 Flask에 mypackage 대신 mypackage.app에 상대적인 자원을 찾습니다.

    __name__을 사용하면 "하드 코딩"과 직각이 아니기 때문에 패키지 이름을 사용하는 것이 간단합니다. 그리고 이라는 이름이이 기본 패키지가되어야한다고 말하는 이유도 없습니다. 이는 전적으로 프로젝트 구조에 달려 있습니다.

    +0

    '올바른'장소 '에 대해 좀 더 자세히 설명해 주시겠습니까? AFAIK, 패키지의'__init __. py'에서'__name__'은 그 패키지의 이름이 될 것입니다. 그렇다면 어떤 부분이 "올바른 것"으로 간주됩니까? –

    +0

    일반적으로 기본 패키지 이름이 정확합니다. 그것을 시도하고 특정 문제가 있었나요? – davidism

    +0

    아직 없습니다. 나는 시작하기 전에 실험을하고 아무 것도 이해하려고 노력 중입니다 ... –