Skip to content

ChoiKangM/lunch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

점심 뭐 먹지?

파이썬을 활용해 일상에서 쓸 수 있을 프로젝트를 만듭니다

Flask로 간단한 웹서버 키자

파이참 프로젝트를 실행하고 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

서버가 잘 켜지나요?

img/hello_world!.png

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"

새로고침하니 수정사항이 반영되나요? img/This_is_haedal.png

서버를 킬때마다 $ 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/자기이름으로 가봅니다

img/greeting_name.png

대수학과 산술학에서 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/숫자로 가봅니다

img/cube.png

사람 수 만큼 점심 메뉴를 추천합니다
파이썬 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 파일을 생성합니다
아래의 디렉토리 처럼 만들면 됩니다 :)

img/directory.png

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>

img/show.png

수고하셨습니다 :)

About

오늘 점심 뭐먹지?

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published