-
21.09.17. 4-1~5강 (Flask 서버 만들기)일기 2021. 9. 17. 22:22
[폴더 만들기]
- 통상적으로 flask 서버를 돌리는 파일 이름은 app.py라고 많이 지으니 웬만하면 통일
[Flask 프레임워크]
- 프레임워크 안 쓰면 태양초 빻아서 고추장 만드는 격
*flask 시작 코드
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)->run 하고 http://localhost:5000/ 가보면 'This is Home!' 뜸
=>localhost:5000으로 내가 지금 내 컴퓨터에서 서버를 돌리고 있는 것
그리고 내가 지금 내 컴퓨터에서 다른 브라우저를 열어서 거기에 접속한 것
cf>5000은 port. 바깥 인터넷 세상에 뚫어놓은 항구? 문? 넘버.
바꿀 수도 있지만 거의 대부분 이미 정해진 번호를 갖고 있으니 웬만하면 변경X
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return '나의 첫 서버!!!'
@app.route('/mypage')
def mypage():
return 'mypage입니다'
if __name__ == '__main__':
app.run('0.0.0.0',port=5000,debug=True)=>http://localhost:5000/mypage 가보면 'mypage입니다' 뜸 (꼭 앱 루트, 디파인 둘다 바꿔주기)
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return '<button>나는버튼이다</button>'
if __name__ == '__main__':
app.run('0.0.0.0',port=5000,debug=True)=>return에 html을 쓰면 서버 페이지에 그대로 표시되는 것!
이 작업을 간단히 하기 위해 프레임워크 사용!
*정해진 폴더 구조
+스펠링 그대로 쓰기!
- static : CSS나 이미지 파일 담아둘 때 사용
- templates : html 파일들을 담아둘 때 사용
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/') =>local:5000/ 접속하면 여기로 들어옴
def home(): =>들어와서 해당 함수 실행
return render_template('index.html') =>html 템플릿을 리턴함
if __name__ == '__main__':
app.run('0.0.0.0',port=5000,debug=True)=>render_template이라는 flask에서 이미 정해둔 함수를 이용하면 위의 형식처럼 간단하게 만 써도
자동으로 temlates 폴더 안에 있는 index.html 파일을 가져다 클라이언트에 제공
[API 만들기]
- 은행 창구와 같은 개념
- 클라이언트가 요청하는 '방식'
┌ GET : 통상적으로! 데이터 조회(Read)를 요청할 때 ex) 영화 목록 조회
│ 데이터 전달: URL 뒤에 물음표 붙여 key=value로 전달 ex) google.com?q=북극곰
└ POST : 통상적으로! 데이터 생성(Create), 변경(Update), 삭제(Delete) 요청 할 때 ex> 회원가입, 탈퇴, 비번 수정
데이터 전달: 바로 보이지 않는 HTML body에 key:value 형태로 전달
- API를 만들고, 클라이언트에서 Ajax로 콜 해보기!
*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!'})from flask import Flask, render_template, request, jsonify
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html')
@app.route('/test', methods=['GET'])
def test_get():
title_receive = request.args.get('title_give') =>'title_give'로 가져온 값 한번 찍어줘 봐
print(title_receive)
return jsonify({'result':'success', 'msg': '이 요청은 GET!'})
if __name__ == '__main__':
app.run('0.0.0.0',port=5000,debug=True)*GET 요청 확인 Ajax코드
$.ajax({
type: "GET",
url: "/test?title_give=봄날은간다",
data: {},
success: function(response){
console.log(response)
}
})localhost5000/ 접속 -> Console창에 위의 코드 입력
=>
{msg: '이 요청은 GET!', result: 'success'}
msg: "이 요청은 GET!"
result: "success"=>console.log(response)를 직었기 때문에 나오는 값.
response: 서버에서 내려주는 값 (return 부분)
*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!'})from flask import Flask, render_template, request, jsonify
app = Flask(__name__)
@app.route('/')
def home():
return render_template('index.html')
@app.route('/test', methods=['GET'])
def test_get():
title_receive = request.args.get('title_give')
print(title_receive)
return jsonify({'result':'success', 'msg': '이 요청은 GET!'})
@app.route('/test', methods=['POST'])
def test_post():
title_receive = request.form['title_give'] =>'title_give'로 가져온 값 한번 찍어줘 봐
print(title_receive)
return jsonify({'result':'success', 'msg': '이 요청은 POST!'})
if __name__ == '__main__':
app.run('0.0.0.0',port=5000,debug=True)*POST 요청 확인 Ajax코드
$.ajax({
type: "POST",
url: "/test",
data: { title_give:'봄날은간다' }, =>GET과 값을 가져가는 방식이 좀 다름
success: function(response){
console.log(response)
}
})cf) INTERNAL SERVER ERROR: 서버에 에러가 났다는 말. 해당 파이썬 파일에 뜬 KeyError를 확인해야 함
'일기' 카테고리의 다른 글
21.09.17. 4-10~15강 (프로젝트2. 나홀로 메모장) (0) 2021.09.18 21.09.17. 4-6~9강 (프로젝트1. 모두의 책 리뷰) (0) 2021.09.18 21.09.15. 3-10~15강 (MongoDB, pymongo 코드) (0) 2021.09.16 21.09.14. 3-4~9강 (파이썬, 패키지(requests, bt4) 크롤링) (0) 2021.09.15 21.09.14. 3-1~3강 (복습) (0) 2021.09.14