[python] Flask를 사용하여 온라인 서베이 및 설문지 시스템 구축하기

이번 포스팅에서는 Python의 Flask 프레임워크를 활용하여 온라인 서베이 및 설문지 시스템을 구축하는 방법에 대해 다뤄보겠습니다. Flask는 가벼우면서도 강력한 웹 프레임워크로, 그 유연성과 확장성으로 많은 개발자들에게 선호되고 있습니다.

필수 패키지 설치

가상환경을 만들고 다음 패키지를 설치합니다.

pip install flask
pip install flask-wtf
pip install flask-bootstrap

데이터베이스 구성

이 예시를 위해 SQLite 데이터베이스를 사용하겠습니다. 데이터베이스 모델을 정의하고 마이그레이션을 수행하는데에는 Flask-Migrate 확장을 사용합니다.

from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()

class Survey(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    question = db.Column(db.String(100))

웹 애플리케이션 개발

프로젝트 폴더 안에 app.py 파일을 만들고 다음과 같이 Flask 애플리케이션을 작성합니다.

from flask import Flask, render_template
from forms import SurveyForm
from models import db, Survey

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///survey.db'
app.config['SECRET_KEY'] = 'secret'
db.init_app(app)

@app.route('/', methods=['GET', 'POST'])
def survey():
    form = SurveyForm()
    if form.validate_on_submit():
        survey = Survey(question=form.question.data)
        db.session.add(survey)
        db.session.commit()
    return render_template('survey.html', form=form)

@app.route('/results')
def results():
    surveys = Survey.query.all()
    return render_template('results.html', surveys=surveys)

HTML 템플릿 작성

다음은 survey.htmlresults.html 템플릿 파일의 예시입니다.


<!-- survey.html -->
<form method="POST">
    {{ form.csrf_token }}
    {{ form.question.label }} {{ form.question(size=20) }}
    <button type="submit">Submit</button>
</form>


<!-- results.html -->
<h2>Survey Results</h2>
<ul>
    {% for survey in surveys %}
        <li>{{ survey.question }}</li>
    {% endfor %}
</ul>

웹 애플리케이션 실행

다음과 같이 애플리케이션을 실행할 수 있습니다.

export FLASK_APP=app.py
export FLASK_ENV=development
flask run

결론

이렇게 Flask를 사용하여 간단한 온라인 서베이 및 설문지 시스템을 구축할 수 있습니다. Flask의 간결하면서도 강력한 기능들을 활용하여 좀 더 복잡한 기능들을 추가해볼 수도 있습니다. 이를 통해 자신만의 커스텀 서베이 시스템을 구축할 수 있을 것입니다.

참고 문헌: