Week2 - Day1 (Flask)

jae oh·2021년 7월 24일
0

2021-summer-ai-bootcamp

목록 보기
6/8

우선, 내가 참가하고 있는 부트캠프에서는 파이썬을 사용하고 있다.
그래서 이번에 파이썬 웹 프레임워크를 배우고 있는데, 그중에서 이번주는 Flask를 배운다.
사실 나는 캡스톤할 때 Flask를 이용해서 rest api를 만들어 보긴 했었으나 그때 당시에는 Django가 가장 강력할 때 였어서, 플라스크에 관한 레퍼런스나 책이 많지 않아서 공부할 때 조금 힘들었기도 했고, 잠깐하다 말아서 이번에 좀 진득하게 배우고 계속 잘 활용하고싶당 ㅎㅎㅎ


그래서 Flask가 뭔데?:

여기서 잠깐! virtualenv가 뭐야?

  • 가상환경
  • 왜 써야하는 걸까?
    - 경우에 따라, 자신이 속한 프로젝트에서 사용하는 언어의 버전이 다를 수도 있다. 예를 들어, 현재 내 로컬에는 파이썬이 3.9 버전인데, 프로젝트에서는 3.8버전을 요구한다면! 이와 같은 virtualenv을 통해 프로젝트에서 필요한 환경을 따로 세팅할 수 있다.
    - 위 처럼 pip을 통해 virtualenv 설치가 완료되면, 자신이 원하는 이름의 가상환경을 만들어준다. (나는 기본에 따라 venv로 만들었다.)

    -source venv/bin/activate을 통해 가상환경을 활성화해준다. pip freeze는 현 환경에서 설치된 모듈들을 확인할 수 있는데, 지금 실행중인 가상환경 venv에는 아무것도 설치하지 않았으니, 해당 내역에 아무것도 없다! 이는 당연한 것.
    -그래서 이후에 flask를 따로 설치해줬다.
    -이후에 가상환경을 종료하고 싶을 땐, deactive 하나만 cli에서 입력해주면 끝!

시작하기

Flask의 기본 형식을 아래와 같다.

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello World!'

if __name__ == '__main__':
    app.run() 
  • 이 코드는 이 파일이 실행되었을 때, 가장 기본 화면이 'Hello World!'로 나올 것이다.
  • cli 환경에서 flask run을 입력하면 해당 앱이 실행이 될 것인데, 주소창이 나올 것이다. 그 주소창을 브라우저 url창에 입력하면 앱의 실행결과를 볼 수 있다.

메소드 지정하기

@app.route('/', methods=["GET"])
  • route 함수안에 있는 methods=[""]GET/POST/PUT/DELETE 등이 들어간다.
  • 기본적으로 methods는 GET을 사용하는 것이 보편적이기 때문에, 해당 사항에서는 route함수에서 methods 항목을 생략해도 된다.

Flask 예시

@app.route('/menus/<int:num_id>', methods=["DELETE"])
def remove_menu(num_id):
    for i in range(len(menus)):
        if menus[i]["id"] == num_id:
            del menus[i]
            break
    return "Success delete %dth menu" %num_id
#   return f"Success delete {num_id}th
  • 이건 실습시간에 내가 만들어본 기능인데, 이처럼 url은 내가 받고싶은 형식으로 받고, 어떤 method를 사용할 것인지 명시해주면 된다.
  • 아래 return문은 둘다 값은 결과값인데, formatting에 따라 다른 방식으로 쓸 수 있다.
    내가 안잊으려고 메모

인터넷과 웹

  1. 지금와서는 당연한 이야기지만, 인터넷은 엄연히 다른 단어다. (컴공에 오기전까지는 아무것도 몰랐다.)
  2. 인터넷: 특정한 연결망(네트워크)로 연결된 통신망이다.
  3. : 위의 인터넷으로 연결된 사용자들의 공간이다.
  4. 인터넷으로 연결되어있지만 웹은 아닌 무언가: 대표적으로 메일이 있다. 웹과 메일과 방식이 조금 다르다.

요청, 처리, 응답

  1. 요청(Request): 클라이언트가 서버에게 어떤 무언가(정보)를 요청한다.
  2. 처리: 서버가 클라이언트가 원하는 행위를 한다.(DB에서 정보를 갖고오거나 웹페이지를 채워서 문서를 준비한다.)
  3. 응답(Response): 서버가 결과값을 클라이언트에게 보낸다(제공한다).

여기서 우리의 Flask는?

  • 클라이언트로부터 들어온 요청이 무엇인지 서버에게 전달해주는 역할은 한다고 보면 된다.
  • A라는 요청이 왔을 때는 어떻게 처리할 것인지
profile
여기저기 돌아다니는중

0개의 댓글