[파이썬] 웹 프레임워크를 이용한 실시간 학습 진도 관리

Python은 강력한 웹 프로그래밍 언어로, 다양한 웹 프레임워크를 통해 높은 수준의 웹 애플리케이션 개발을 지원합니다. 이번 글에서는 파이썬 웹 프레임워크인 Flask를 사용하여 실시간 학습 진도 관리 시스템을 개발하는 방법에 대해 알아보겠습니다.

Flask 소개

Flask는 가볍고 간결한 구조를 지닌 마이크로 웹 프레임워크로, 웹 애플리케이션 개발을 위한 필수 기능들을 제공합니다. Flask는 확장성이 뛰어나며, 다양한 플러그인과 유연한 아키텍처를 통해 개발자들에게 많은 편의를 제공합니다.

실시간 학습 진도 관리 시스템 구현하기

이제 Flask를 사용하여 실시간 학습 진도 관리 시스템을 개발해 보겠습니다. 이 시스템은 학습자들이 학습하는 과정에서 실시간으로 진도를 관리하고, 학습 상태를 확인할 수 있게 해주는 기능을 제공합니다.

데이터베이스 설정

먼저, SQLite 데이터베이스를 사용하기 위해 Flask-SQLAlchemy 플러그인을 설치해야 합니다. 아래 명령을 사용하여 터미널에서 설치할 수 있습니다.

pip install Flask-SQLAlchemy

다음으로, 데이터베이스 모델을 정의하기 위해 아래와 같은 코드를 작성합니다.

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///progress.db'
db = SQLAlchemy(app)

class Progress(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.String(50), nullable=False)
    course_id = db.Column(db.String(50), nullable=False)
    progress = db.Column(db.Float, nullable=False)

라우팅 및 템플릿

다음으로, 학습 진도를 업데이트하기 위한 API 엔드포인트와 학습 상태를 보여주는 템플릿을 작성해야 합니다. 아래 코드를 참고하여 구현해 보세요.

from flask import render_template, request, jsonify

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

@app.route("/update_progress", methods=["POST"])
def update_progress():
    user_id = request.form.get("user_id")
    course_id = request.form.get("course_id")
    progress = float(request.form.get("progress"))

    # 진도 업데이트 로직 구현

    return jsonify({"success": True})

if __name__ == "__main__":
    app.run(debug=True)

프론트엔드 개발

마지막으로, 프론트엔드 개발을 위해 HTML과 JavaScript를 작성해야 합니다. index.html 파일에는 학습 상태를 보여주는 UI를 구현하고, main.js 파일에는 학습 진도를 업데이트하는 로직을 작성합니다.


<!-- index.html -->
<!DOCTYPE html>
<html>
<head>
    <title>학습 진도 관리 시스템</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="{{ url_for('static', filename='main.js') }}"></script>
</head>
<body>
    <h1>학습 진도 관리 시스템</h1>

    <form id="progress_form">
        <label for="user_id">사용자 ID:</label>
        <input type="text" name="user_id" id="user_id" required><br>

        <label for="course_id">과정 ID:</label>
        <input type="text" name="course_id" id="course_id" required><br>

        <label for="progress">진도:</label>
        <input type="number" name="progress" id="progress" min="0" max="100" required><br>

        <button type="submit">진도 업데이트</button>
    </form>
</body>
</html>

// main.js
$("#progress_form").submit(function(event) {
    event.preventDefault();

    var formData = $(this).serialize();

    $.ajax({
        url: "/update_progress",
        method: "POST",
        data: formData,
        success: function(response) {
            alert("진도가 업데이트되었습니다.");
        },
        error: function(xhr, status, error) {
            alert("진도 업데이트에 실패했습니다.");
        }
    });
});

결론

이제 Flask를 사용하여 실시간 학습 진도 관리 시스템을 개발하는 방법에 대해 알아보았습니다. Flask의 간결한 구조와 확장성을 통해 복잡한 기능을 간편하게 구현할 수 있습니다. 이를 통해 학습 관리 시스템을 개발하고, 학습자들의 진도를 실시간으로 관리할 수 있습니다.