웹 애플리케이션을 개발하다보면 사용자가 입력한 데이터를 처리해야 하는 경우가 많습니다. 이때, 파이썬을 사용하여 브라우저에서 동작하는 웹 애플리케이션에서 데이터를 처리하는 방법을 알아보겠습니다.
HTML 폼으로 데이터 전송하기
HTML 폼을 사용하여 사용자가 입력한 데이터를 서버로 전송할 수 있습니다. 폼을 작성할 때는 form
요소를 사용하고, 데이터를 전송할 때는 action
속성을 사용하여 서버의 URL을 지정합니다. 예를 들어, 다음과 같이 폼을 작성할 수 있습니다.
<form action="/process" method="POST">
<input type="text" name="name">
<input type="submit" value="전송">
</form>
위의 예제에서 name
속성은 사용자가 입력한 데이터의 이름을 나타냅니다. 데이터를 전송할 때는 POST
메서드를 사용하여 폼 데이터를 서버로 전송합니다.
Flask로 데이터 처리하기
Flask는 파이썬으로 웹 애플리케이션을 개발할 때 사용되는 마이크로 웹 프레임워크입니다. Flask를 사용하여 브라우저에서 전송된 데이터를 처리할 수 있습니다.
먼저, Flask를 설치하고 다음과 같이 간단한 Flask 애플리케이션을 작성해보겠습니다.
from flask import Flask, request
app = Flask(__name__)
@app.route('/process', methods=['POST'])
def process_data():
name = request.form['name']
# 데이터 처리 로직을 작성
return 'Hello, ' + name + '!'
if __name__ == '__main__':
app.run()
위의 예제에서 /process
URL로 POST
요청이 들어오면 process_data
함수가 실행됩니다. 함수 내에서는 request.form
을 통해 폼 데이터에 접근할 수 있습니다. 이후 데이터 처리 로직을 작성하여 결과를 반환하면 됩니다.
데이터베이스와 연동하기
웹 애플리케이션에서 사용자가 입력한 데이터를 데이터베이스에 저장하고 싶다면, 데이터베이스와 연동하는 방법을 알아야 합니다.
Flask에서 데이터베이스와 연동하기 위해 SQLAlchemy라는 파이썬 ORM(Object-Relational Mapping) 라이브러리를 사용할 수 있습니다. SQLAlchemy를 사용하면 파이썬 객체와 데이터베이스 테이블을 연결할 수 있습니다.
데이터베이스 연동 예제는 다음과 같습니다.
from flask import Flask, request
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db' # 데이터베이스 URL 설정
db = SQLAlchemy(app)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))
@app.route('/process', methods=['POST'])
def process_data():
name = request.form['name']
user = User(name=name)
db.session.add(user)
db.session.commit()
return 'Hello, ' + name + '!'
if __name__ == '__main__':
app.run()
위의 예제에서 User
클래스는 데이터베이스 테이블과 매핑됩니다. 사용자가 입력한 데이터를 User
객체로 생성하여 데이터베이스에 추가하고, commit()
메서드로 변경 사항을 저장합니다.
결론
브라우저에서 동작하는 파이썬을 사용하여 웹 애플리케이션의 데이터를 처리하는 방법에 대해 알아보았습니다. HTML 폼을 사용하여 데이터를 전송하고, Flask를 사용하여 데이터를 처리하며, SQLAlchemy를 사용하여 데이터베이스와 연동하는 방법을 사용하는 것이 일반적입니다. 이를 통해 웹 애플리케이션의 데이터 처리를 손쉽게 구현할 수 있습니다.
관련 레퍼런스: Flask 공식 문서