-
Notifications
You must be signed in to change notification settings - Fork 1
2.22. 내용정리: 25일차
흔한 찐따 edited this page Apr 19, 2022
·
7 revisions
- 프레임워크는 사전적인 의미로 틀 혹은 뼈대, 골조 라는 뜻이다.
- 프레임워크(Framework) 란, 복잡한 문제를 해결하거나 서술하기 위해 사용되는 기본적인 개념 구조이다.
- 다시 말해, 어떤 소프트웨어를 개발하는데에 있어 필요한 구성 요소들을 언제든 재사용이 가능하도록 구성해놓은 것이 바로 프레임워크이다.
- 컴포넌트, 라이브러리를 포함하는 개념이라고 볼 수 있다.
- 라이브러리는 소프트웨어를 개발하는데 필요한 부품, 프레임워크는 소프트웨어의 뼈대로 비유할 수 있다.
-
MVC 패턴이란, Model-View-Controller를 지칭하는 디자인 패턴의 일종이다.
- 디자인 패턴(Design pattern) 은 소프트웨어 공학의 소프트웨어 디자인에서 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책을 의미한다.
- 모델-뷰-컨트롤러는 응용 프로그램을 다음과 같이 세 가지의 구성요소로 나눈다.
각각의 구성요소들 사이에는 다음과 같은 관계가 있다.
- 모델(model) 이란, 어떠한 동작을 수행하는 코드를 말한다.
- 모델은 모델의 상태에 변화가 있을 때 컨트롤러와 뷰에 이를 통보한다.
- 이와 같은 통보를 통해서 뷰는 최신의 결과를 보여줄 수 있다.
- 어떤 MVC 구현에서는 통보 대신 뷰나 컨트롤러가 직접 모델의 상태를 읽어 오기도 한다.
- 뷰는 보여줄 값(모델)을 컨트롤러로부터 받아와 사용자에게 보여준다.
- 뷰는 사용자가 볼 결과물을 생성하기 위해 모델로부터 정보를 얻어 온다.
-
컨트롤러는 모델에 명령을 보냄으로써 모델의 상태를 변경할 수 있다.
- 예: 워드 프로세서에서 문서를 편집하는 것
- 또, 컨트롤러가 관련된 뷰에 명령을 보냄으로써 모델의 표시 방법을 바꿀 수 있다.
- 예: 문서를 스크롤하는 것
- 플라스크(flask) 란, 파이썬용 마이크로 프레임워크(micro-framework) 이다.
-
flask는 더 작은 애플리케이션, API 및 웹 서비스를 구축하기 위한 라이브러리이다. - 좀 더 자세한 설명은 flask 공식 문서 를 참고하면 된다.
- 디자인 패턴 중에서 웹 프레임워크에 보편적으로 사용되는 패턴인 MVC 패턴으로 설계되었다.
-
flask는 특히 간단하게 웹 서비스를 개발할 수 있는 강력한 프레임워크이다. -
flask를 사용하기 위해서는 명령 프롬프트에pip명령어를 통해 설치해야 한다. - 설치 명령어:
pip install flask
- 아래는
flask를 사용하여 MVC 패턴을 적용시켜 웹 애플리케이션을 작성한 간단한 예시이다.
from flask import Flask
# 먼저, Flask 애플리케이션 객체를 생성한다.
# Flask 객체는 웹 애플리케이션을 구현하고 그 중심적인 역할을 한다.
# 인자값으로 애플리케이션의 모듈 또는 패키지 이름이 전달된다.
# 일단 생성되면 보기(View) 기능, URL 규칙(rules), 템플릿(templates) 구성 등을 위한 애플리케이션의 중심부 역할을 한다.
app = Flask(__name__)
# 그 다음 'route' 함수를 통해 URL을 지정한다.
# 아래의 예시러럼 데코레이터로 정의한다.
@app.route('/')
def main():
# 반환값은 웹 브라우저에 보여주기 위한 HTML 코드가 전달된다.
return '<h1>Hello, Flask!</h1>'
# Flask 애플리케이션을 실행하기 위해서는 'run' 메서드를 호출하면 된다.
# 인자값으로는 호스트(host) 주소와 포트(port) 번호를 받는다.
# 여기서는 포트 번호를 웹 서버 포트 번호인 '80'을 입력해주었다.
if __name__ == '__main__':
host = 'localhost'
port = 80
app.run(host, port)- 실행이 완료되면 http://localhost:80 으로 접속해본다.
- URL 뒷부분의 포트 번호는 웹 포트 번호인 80이므로, http://localhost 같이 생략하여 접속이 가능하다.