🔥 sparta → projects → prac 폴더에서 시작!
- - -
prac
|— venv
|— [app.py](http://app.py) (서버)
|— templates
|— index.html (클라이언트 파일)
😎 Flask는 만들 프로젝트의 폴더 구조가 정해져 있어요! 규칙을 지켜주세요!
app.py 파일을 생성합니다!templates 폴더를 생성합니다!index.html 파일을 생성합니다!🤔 아무 이름이나 쓰면 안되나요? → 몇 가지 규칙이 있습니다!
templates 폴더는 반드시 고정해야 합니다! Flask의 규칙이에요!app.py는 변경해도 좋습니다만, 라이브러리 이름과 같은 것을 이름으로 사용하면 안돼요!index.html은 변경해도 좋습니다만, 첫 페이지는 일반적으로 index.html을 사용해요!🔥 준비가 끝났다면 화면 상단 File > Open Folder로 prac 폴더로 이동합니다!
😎 우리는 웹을 만들기 위해 사용할 편리한 도구모음, 라이브러리를 사용할 거에요!
라이브러리를 담아둘 공구함, 가상환경 기억나시죠?
우리가 원하는 라이브러리만 설치해서 관리할 수 있도록 폴더에 하나씩 설치해줄거에요!
1) venv 생성하기
화면 상단 Terminal > New Terminal 을 클릭!
📌 터미널에 bash가 아닌 것이 뜬다면?
터미널에서 오른쪽의 십자버튼(➕) 옆의 더보기버튼(🔽)을 클릭해주세요!
> 화면 위쪽에 목록이 뜨게되면 bash를 골라주시고 엔터를 눌러주세요!
>
>
> 
>
- `python(맥은 python3) -m venv venv` 를 입력한 뒤 엔터!

> 그러면 venv 폴더가 projects 폴더 내부에 생성되었습니다!
>
>
> 
>
- 4) venv 활성화하기
<aside>
😎 가상환경을 만든 것이 끝이 아닙니다! 활성화 시켜줘야 라이브러리를 컴퓨터가 읽어줘요!
</aside>
[화면 기록 2022-11-28 오후 5.36.12.mov](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e0a24d99-576b-4666-85f1-f8ee5fa2cd81/%E1%84%92%E1%85%AA%E1%84%86%E1%85%A7%E1%86%AB_%E1%84%80%E1%85%B5%E1%84%85%E1%85%A9%E1%86%A8_2022-11-28_%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE_5.36.12.mov)
- [`app.py`](http://app.py) 파일을 클릭해주세요!
- **VS Code 오른쪽 아래**의 `파이썬 버전`(예: 3.9.6)을 클릭한 뒤, 화면 위쪽에서 **venv가 쓰여있는 파이썬 버전을 클릭해주세요!**
- 터미널에서 오른쪽의 십자버튼(➕)을 클릭해주세요!
> 터미널에서 `(venv)` 라고 뜨게 된다면 가상환경이 활성화 된거에요!
>
>
> 
>
Flask 프레임워크: 서버를 구동시켜주는 편한 코드 모음.
웹 서버를 구동하는데 필요한 복잡한 코드들을 쉽게 가져다 쓸 수 있습니다.
👀 프레임워크를 쓰지 않으면 태양초를 빻아서 고추장을 만드는 격! 프레임워크는 3분 요리/소스 세트라고 생각하면 되겠습니다!app.py 파일에 아래 코드를 붙여넣어봅니다.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return 'This is Home!'
if __name__ == '__main__':
app.run('0.0.0.0',port=5000,debug=True)화면 상단 Terminal > New Terminal 을 클릭!
(venv)가 보인다면 가상환경 활성화 상태!
터미널에서 python(맥은 python3) app.py 라고 적고 엔터를 눌러보세요!
터미널에서 아래 처럼 보이면 잘 작동한거에요!
👀 맥 환경에서 실행이 안된다면?

네트워크 5000번 주소(포트)가 이미 사용 중이라고 하네요!
app.py 파일로 들어와서 마지막 줄에 port=5000을 5001로 바꿔보세요!
다시 실행! 짠!
터미널에 나오는 http://localhost:5000 링크 부분에 마우스를 대로 Ctrl(맥은 Command) 클릭!
종료하는 방법
👀 터미널 창을 클릭하시고, ctrl + c 을 누르시면 서버를 종료할 수 있습니다.😎 은행 창구에서 은행원의 역할을 하는 서버! 만들어 봅시다!
- 은행의 창구가 API와 같다는 것을 기억하시나요?
- 같은 예금 창구에서도 개인 고객이냐 기업 고객이냐에 따라 처리하는 것이 다른 것처럼,
- **클라이언트가 요청 할 때에도, "방식"이 존재합니다.**
- HTTP 라는 통신 규약을 따른다는 거 잊지 않으셨죠? 클라이언트는 요청할 때 HTTP request method(요청 메소드)를 통해, 어떤 요청 종류인지 응답하는 서버 쪽에 정보를 알려주는 거에요.
- 여러 방식이 존재하지만, 가장 많이 쓰이는 `GET`, `POST` 방식에 대해서 다루겠습니다!
1) GET 요청
- 통상적으로 데이터 조회(Read)를 요청할 때, 사용합니다!
예) 영화 목록 조회
→ 데이터 전달 : URL 뒤에 물음표를 붙여 key=value로 전달
2) POST 요청
- 통상적으로 데이터 생성(Create), 변경(Update), 삭제(Delete) 요청 할 때 사용합니다!
예) 회원가입, 회원탈퇴, 비밀번호 수정
→ 데이터 전달 : 바로 보이지 않는 HTML
😎 고객이 명세서를 작성하면 은행원이 내용을 봐야겠죠?
title_give란 키 값으로 데이터를 들고왔다고 생각합시다.(주민등록번호 라는 키 값으로 900120- .. 을 가져온 것과 같은 의미)print() 코드를 사용해서 들어온 데이터를 터미널에 눈으로 볼 수 있게 찍어봅시다!<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
[코드스니펫] GET 요청 API코드
@app.route('/test', methods=['GET'])
def test_get():
title_receive = request.args.get('title_give')
print(title_receive)
return jsonify({'result':'success', 'msg': '이 요청은 GET!'})
[코드스니펫] GET 요청 확인 Fetch 코드
fetch("/test").then(res => res.json()).then(data => {
console.log(data)
})
[코드스니펫] POST 요청 API코드
@app.route('/test', methods=['POST'])
def test_post():
title_receive = request.form['title_give']
print(title_receive)
return jsonify({'result':'success', 'msg': '이 요청은 POST!'})
[코드스니펫] POST 요청 확인 Fetch코드
let formData = new FormData();
formData.append("title_give", "블랙팬서");
fetch("/test", { method: "POST", body: formData }).then(res => res.json()).then(data => {
console.log(data)
})