파이썬

Python 기초강의: #13 실전 프로젝트(2) - Flask를 이용한 계산기 만들기

TitediosKW 2024. 7. 4. 19:00
반응형


이번 포스팅에서는 저번 포스팅에 이어서 flask를 이용한 계산기 만드는 프로젝트를 해보도록 하겠습니다. 지난 시간에는 개발을 위한 준비과정을 거쳤다면 이번 포스팅에서는 실제 개발을 할 예정이니까요 훨씬 즐거운 시간이 될 것입니다. 그럼 지금부터 시작해보도록 하겠습니다.

'app.py' 파일 작성

파일 구조로 만들어 놓은 것 중 app.py를 작성할 것 입니다. 실제 Flask의 동작을 수행하는 기능 개발 부분입니다. 여러분이 원하는 동작을 여기에서 작성하는 것입니다.

from flask import Flask, request, render_template

app = Flask(__name__) # flask 객체 생성

@app.route('/', methods=['GET', 'POST']) #  GET/POST 메소드 모두 허용
def calculator():
  if request.method == 'POST': # POST 메소드인 경우 처리 로직
    try:
      num1 = float(request.form['num1']) # html로 부터 값을 전달 받는 부분
      num2 = float(request.form['num2'])
      operation = request.form['operation']

      if operation == 'add': # 덧셈
        result = num1 + num2
      elif operation == 'subtract': # 뺼셈
        result = num1 - num2
      elif operation == 'multiply': # 곱셈
        result = num1 * num2
      elif operation == 'divide': # 나눗셈
        result = num1 / num2
      else:
        result = 'Invalid operation' # 지원하지 않는 연산자에 대한 처리

      return render_template('index.html', result=result)
    except (ValueError, ZeroDivisionError) as e:  # 예외처리
      return render_template('index.html', result=f'Error: {str(e)}')
  return render_template('index.html', result=None)

if __name__ == '__main__':
  app.run(debug=True) # Flask 객체를 실행


코드에서 flask와 관련된 부분 즉, 우리가 배우지 않은 부분에 대해서는 너무 신경쓰지 않으셔도 됩니다. 왜냐하면 flask라는 외부 라이브러리를 사용하기 위해 flask가 정해놓은 방식이기 때문입니다. 우리가 집중해야할 부분은 'if request.method == 'POST':' 코드 (7 line) 이후 실제 구현 부분입니다. 여기에 우리가 배운 지식을 기반으로 계산기의 연산 기능을 구현하고 예외처리를 하였기 때문입니다.

외부 라이브러리의 사용법을 좀 더 자세하게 알고 싶으시다면 외부 라이브러리의 documentation 홈페이지를 방문하셔서 문서를 천천히 읽어보시기 바랍니다.

'index.html' 파일 작성

html 파일을 작성함으로써 사용자와의 인터페이스를 구현합니다. 여기에서는 숫자 2개를 받는 부분(input)부분과 연산자를 선택(select)하는 부분을 구현하여 사용자로부터 어떤 연산을 원하는지 입력받는 기능을 수행을 합니다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Flask Calculator</title>
</head>
<body>
    <h1>Flask Calculator</h1>
    <form method="post">
        <input type="number" name="num1" step="any" required placeholder="Enter first number"> 
        <input type="number" name="num2" step="any" required placeholder="Enter second number">
        <select name="operation">
            <option value="add">Add</option>
            <option value="subtract">Subtract</option>
            <option value="multiply">Multiply</option>
            <option value="divide">Divide</option>
        </select>
        <button type="submit">Calculate</button>
    </form>
    {% if result is not none %}
        <h2>Result: {{ result }}</h2>
    {% endif %}
</body>
</html>

Flask 서버 실행

사용자 인터페이스 부분과 실제 웹서버 동작 기능을 모두 구현하였습니다(짝짝짝). 그렇다면 이제 웹서버를 실행시켜 우리 코드가 잘 동작하는지 확인해 봅시다.

python app.py

계산기 사용하기


브라우저에서 계산기 페이지가 나타나면, 두 숫자를 입력하고 원하는 연산을 선택한 후 "Calculate" 버튼을 클릭합니다. 연산 결과가 화면에 표시됩니다.

결론

이렇게 해서 Flask를 이용한 간단한 웹 계산기를 만들어 보았습니다. Flask를 활용하면 더 복잡한 웹 애플리케이션도 쉽게 개발할 수 있습니다. 데이터베이스 연동이나 사용자 인증 같은 기능들을 추가해볼 수도 있습니다. 실전 프로젝트 강의에서 좀 더 깊이 있게 다뤄보는 것으로 하고 이번엔 여기까지 하도록 하겠습니다.

실제 프로젝트도 복잡하고 뭔가 대단한 과정을 거칠 것 같지만 여러분이 이번에 해보신 것과 크게 다르지 않습니다. 환경설정하고 개발 준비하고 그 후에 실제 기능들을 구현해 나가는 과정은 거의 유사합니다. 점점 더 복잡한 기능 및 다른 외부 라이브러리나 프레임워크등의 연동 등 앞으로 넘을 산이 많지만 지금처럼 손가락으로 열심히 배우신다면 크게 어렵지 않으실 것입니다. 이 강의가 밑바탕이 되었으면 하는 작은 바람입니다.

감사합니다.

반응형