[python] Flask를 사용하여 사용자 만족도 조사 시스템 구현하기

이번 블로그 포스트에서는 Python의 웹 프레임워크인 Flask를 사용하여 간단한 사용자 만족도 조사 시스템을 구현하는 방법에 대해 알아보겠습니다.

목차

  1. 시작하기
  2. Flask 설치
  3. 데이터 모델 정의
  4. 사용자 인터페이스 구현
  5. 평가 결과 저장
  6. 결론

1. 시작하기

우선 가상 환경을 설정하고 필요한 패키지를 설치합니다.

$ python3 -m venv satisfaction_survey
$ source satisfaction_survey/bin/activate
(satisfaction_survey) $ pip install flask

2. Flask 설치

Flask를 설치하고 간단한 웹 애플리케이션을 작성합니다.

from flask import Flask, render_template, request, redirect, url_for
app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

if __name__ == '__main__':
    app.run()

3. 데이터 모델 정의

만족도 조사 결과를 저장하기 위한 데이터베이스 모델을 정의합니다. 여기서는 SQLite를 사용하여 간단하게 구현하겠습니다.

from flask_sqlalchemy import SQLAlchemy
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///satisfaction.db'
db = SQLAlchemy(app)

class Survey(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    rating = db.Column(db.Integer)
    comment = db.Column(db.String(200))

4. 사용자 인터페이스 구현

웹 페이지에 만족도 조사 폼을 추가하고, 사용자의 선택과 의견을 받습니다.


<!-- index.html -->
<!DOCTYPE html>
<html>
<head>
    <title>Satisfaction Survey</title>
</head>
<body>
    <h1>How satisfied are you with our service?</h1>
    <form method="post" action="{{ url_for('save_survey') }}">
        <label for="rating">Rating (1-5):</label>
        <input type="number" name="rating" min="1" max="5" required>
        <br>
        <label for="comment">Comment:</label>
        <textarea name="comment" rows="4" cols="50"></textarea>
        <br>
        <input type="submit" value="Submit">
    </form>
</body>
</html>

5. 평가 결과 저장

폼에서 제출된 결과를 데이터베이스에 저장합니다.

@app.route('/save', methods=['POST'])
def save_survey():
    rating = request.form['rating']
    comment = request.form['comment']
    survey = Survey(rating=rating, comment=comment)
    db.session.add(survey)
    db.session.commit()
    return 'Thank you for your feedback!'

6. 결론

이제 Flask를 사용하여 간단한 사용자 만족도 조사 시스템을 구현하는 방법에 대해 알아보았습니다. 데이터베이스에 결과를 저장하고, 웹 페이지에서 사용자의 입력을 받아 처리하는 과정을 살펴보았습니다. Flask를 활용하면 더 복잡한 웹 애플리케이션을 구현할 수 있으니 참고하시기 바랍니다.

참고 자료: