[flask] 플라스크 - 06. Flask 로또 앱 만들기
Flask 로또 앱 만들기
Flask 로또 문제
로또 문제!
동행복권에서 로또 당첨번호 JSON으로 가져와서 처리
https://dhlottery.co.kr/common.do?method=getLottoNumber&drwNo=1
app.py 코드 작성
from flask import Flask, render_template, request import random import requests app = Flask(__name__) # 사용자의 로또 input을 받는다. # lotto_result로 받는다. @app.route('/lotto_check') def lotto_check(): return render_template('lotto_check.html') @app.route('/lotto_result') def lotto_result(): # lotto_check에서 보낸 lotto_round input을 받는다. lotto_round = request.args.get('lotto_round') numbers = [int(num) for num in lotto_round.split()] print(lotto_round) # 10 23 29 33 37 40 # 동행복권 사이트에서 1회차 로또 당첨 번호를 JSON으로 가져온다. url = 'https://dhlottery.co.kr/common.do?method=getLottoNumber&drwNo=1' response = requests.get(url) # Response [200] : '응답을 잘 받았다'라는 의미 print(response.json()) # {'totSellamnt': 3681782000, 'returnValue': 'success', 'drwNoDate': '2002-12-07', 'firstWinamnt': 0, 'drwtNo6': 40, 'drwtNo4': 33, 'firstPrzwnerCo': 0, 'drwtNo5': 37, 'bnusNo': 16, 'firstAccumamnt': 863604600, 'drwNo': 1, 'drwtNo2': 23, 'drwtNo3': 29, 'drwtNo1': 10} json = response.json() drwNo = json[f'drwNo'] # 제 n 회 bnusNo = json[f'bnusNo'] # 보너스 넘버 # 방법 1 # winner = [] # for i in range(1, 7): # winner.append(json[f'drwtNo{i}']) # print('winner : ', winner) # winner : [10, 23, 29, 33, 37, 40] # 방법 2 winner = [json[f'drwtNo{i}'] for i in range(1, 7)] # 당첨번호 # 번호 당첨 여부 확인하기 if len(numbers) != 6: result = '번호의 수가 6개가 아닙니다!' else: matched = len(set(winner) & set(numbers)) if matched == 6: result = '1등 당첨을 축하드립니다.' elif matched == 5: if json['bnusNo'] in numbers: result = '2등 당첨을 축하드립니다.' else: result = '3등 당첨을 축하드립니다.' elif matched == 4: result = '4등 당첨을 축하드립니다.' elif matched == 3: result = '5등 당첨을 축하드립니다.' else: result = '낙첨 되었습니다.' return render_template('/lotto_result.html', winner=winner, numbers=numbers, drwNo=drwNo, bnusNo=bnusNo, result=result) # app.py 파일이 'python app.py'로 시작되었을 때 서버를 시작하겠다 라는 의미. if __name__ == '__main__': app.run(debug=True) # 서버가 실행이 되어있는동안 수정이 되면 자동으로 재시작을 하겠다 라는 의미
lotto_check.html
파일 생성 후 코드 작성<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Lotto Check</title> </head> <body> <h1>Lotto Check Page</h1> <form action="/lotto_result"> 원하는 번호 6자리를 입력하세요 : <input type="text" name="lotto_round" /> <input type="submit"> </form> </body> </html>
lotto_result.html
파일 생성 후 코드 작성<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Lotto Result</title> </head> <body> <h1>Lotto Result Page</h1> <p>사용자가 입력한 로또 번호는 : </p> <p>제 회 로또 당첨 번호는 : </p> <p></p> </body> </html>
터미널에서
flask run
또는python app.py
실행하면 아래와 같은 결과를 볼 수 있다.- lotto_check 페이지에서 원하는 번호 6개를 입력하면 lotto_result 페이지에서 결과를 볼 수 있다.
References
개발자님들 덕분에 많이 배울 수 있었습니다. 감사의 말씀 드립니다.