[점프투플라스크] 2장. 플라스크 기초 정리본 1부(프로젝트, 어플리케이션팩토리, 블루프린트)


점프 투 플라스크라는 입문서가 나타났다. 살았다. 따라하면서 공부해보자.


2장. 플라스크 기초

2-01 프로젝트의 구조

c:/projects/myproject
├── pybo/
│      ├─ __init__.py
│      ├─ models.py  # ORM(SQL에서 발전한 방식)을 지원하는 SQLAlchemy(파이썬 디비 툴킷)처리 해야되서 
│      ├─ forms.py  #  브라우저에서 서버로 전송된 폼을 처리하기 위해서 WTForms라는 라이브러리를 사용
│      ├─ views/ 
│      │   └─ main_views.py  # 라우트함수 계속 써야되면 불편하니까 블루프린트를 이용해서 여기에 싹다 모아놓는다.
│      ├─ static/
│      │   └─ style.css  # 정적인거 css, js, jpg, png 이런거 저장
│      └─ templates/
│            └─ index.html   # 예를들어 여기서 파이보의 질문목록, 질문상세등의 HTML 파일을 저장하는 디렉터리
└── config.py  # 프로젝트의 환경변수등을 저장하는 파일

2-02 어플리케이션 팩토리

- init.py

: 파이썬 파일을 모듈화 하는 거.(pybo 디렉토리를 만들어서 pybo.py__init__.py로 수정하는거라고 보면 쉽게 이해될거다.)

[C:\projects\myproject\pybo.py] -> [C:\projects\myproject\pybo\__init__.py]

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_pybo():
    return 'Hello, Pybo!'

- 어플리케이션 팩토리

: app = Flask(__name__) 방식은 app을 전역변수로 사용하기 때문에 프로젝트 규모가 커질수록 문제가 발생할 소지가 많아진다.
그래서 어플리케이션 팩토리를 사용해야 된다(예시에서는 create_app로 묶는다.)

```python
from flask import Flask

def create_app():
    app = Flask(__name__)

    @app.route('/')
    def hello_pybo():
        return 'Hello, Pybo!'

    return app

2-03 블루프린트

: 라우트함수(@app.route로 매핑되는 함수)들은 기능이 필요할때마다 계속 추가되어야 하므로 create_app 함수내에 이러한 함수들을 계속 추가하는 것은 불편하다.
그러므로, main_views.py에다가 blueprint로 싹다 라우트함수들을 집어 넣어주고 __init__.py에 그 만든 blueprint로 불러오기만 하면 된다.





참고 사이트 : 점프 투 플라스크




© 2018. by statssy

Powered by statssy