파이썬을 활용해 일상에서 쓸 수 있을 프로젝트를 만듭니다
파이참 프로젝트를 실행하고 Flask
를 다운로드 합니다
$ pip3 install Flask
점심을 뭐먹을 건지 확인하고 싶으므로,
mylunch.py
라는 이름의 파이썬 파일을 만듭니다.
$ touch mylunch.py
mylunch.py
를 통해 서버를 켜보자
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
$ FLASK_APP=mylunch.py flask run
서버가 잘 켜지나요?
FLASK_APP=mylunch.py flask run
명령어는 mylunch.py
파일을
수정할때마다 서버를 껐다 켜야합니다.
서버를 켜두고 작업하다 수정할때마다 디버그를 할 수 있게 하여
새로고침할 때 마다 수정사항을 반영합니다
$ FLASK_DEBUG=1 FLASK_APP=mylunch.py flask run
http://127.0.0.1:5000/haedal을 만들어 봅니다
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
@app.route("/haedal")
def haedal():
return "This is Haedal"
서버를 킬때마다 $ FLASK_DEBUG=1 FLASK_APP=mylunch.py flask run
명령어를 쳐야하면 일이 많겠죠?
파이썬 파일이니 python3 mylunch.py
으로 실행 가능하도록
명령어를 줄여봅니다
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
@app.route("/haedal")
def haedal():
return "This is Haedal"
# Flask를 쉽게 켜자
if __name__ == '__main__':
app.run(debug=True)
$ python3 mylunch.py
인사하고, 간단한 수학 연산 해봅니다
url
을 통해 자기이름을 넘겨 인사합니다
<string:name>
구문을 통해 문자열을 넘깁니다
@app.route("/greeting/<string:name>")
def greeting(name):
return f'반갑습니다. {name}!'
위의 코드를 mylunch.py
에 삽입합니다
서버를 키고 127.0.0.1:5000/greeting/자기이름으로 가봅니다
대수학과 산술학에서 cube
는 세제곱을 의미합니다.
자기이름과 동일하게 url
을 통해 숫자를 넘겨 계산합니다
<int:num>
구문을 통해 숫자를 넘깁니다
@app.route("/cube/<int:num>")
def cube(num):
result = num ** 3
return f'{num}의 세제곱은 {result}'
위의 코드를 mylunch.py
에 삽입합니다
서버를 키고 127.0.0.1:5000/cube/숫자로 가봅니다
사람 수 만큼 점심 메뉴를 추천합니다
파이썬 random
라이브러리의 sample
함수를 사용해봅니다
from random import sample
# 사람 수 만큼 점심 메뉴 추천
@app.route("/lunch/<int:people>")
def lunch(people):
menu = ["짜장면", "짬뽕", "라면", "브리또", "사과", "찜닭"]
return f'{sample(menu, people)}'
위의 코드를 mylunch.py
에 삽입합니다
서버를 키고 127.0.0.1:5000/lunch/사람수로 가봅니다
메뉴보다 사람이 많은 경우 오류가 납니다
이를 해결해볼 수 있을까요? :)
메뉴를 골라 해당하는 음식 사진을 보여줍니다
static
폴더를 만들고, 원하는 사진들을 집어 넣습니다
templates
폴더를 만들고, index.html
파일을 생성합니다
아래의 디렉토리 처럼 만들면 됩니다 :)
mylunch.py
from flask import Flask, render_template
# 점심 메뉴 보여주자
@app.route("/show")
def show():
# 음식 사진을 static 폴더에 추가하고 menu에 집어 넣습니다
# 음식 메뉴 개수는 더 많아도 됩니다
menu = ['짜장면.jpg', '짬뽕.jpeg']
# 음식 메뉴 1개를 뽑습니다
pickme = ''.join(sample(menu,1))
# index.html 파일에 이비지를 불러옵니다
return render_template('index.html', food_img=pickme)
index.html
<!doctype html>
<html>
<head>
<title>show</title>
</head>
<body>
<img src={{ url_for('static', filename=food_img) }}>
</body>
</html>
수고하셨습니다 :)