[python] Flask-WTF에서 폼 데이터를 데이터베이스에 저장하는 방법은 무엇인가요?
- 필요한 모듈과 패키지를 import 합니다. Flask-WTF, SQLAlchemy, 폼 클래스 등을 사용하려면 다음과 같이 import 합니다:
from flask import Flask, render_template, request
from flask_sqlalchemy import SQLAlchemy
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
- Flask 애플리케이션을 설정하고 데이터베이스 연결을 설정합니다:
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db' # 데이터베이스 경로와 이름 설정
app.config['SECRET_KEY'] = 'your-secret-key' # 보안을 위한 시크릿 키 설정
db = SQLAlchemy(app)
- 데이터베이스에 저장할 모델을 정의합니다. 예를 들어, 사용자 정보를 저장하기 위해 User 모델을 다음과 같이 정의할 수 있습니다:
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))
email = db.Column(db.String(100))
- 폼 클래스를 생성합니다. 폼의 필드는 데이터베이스 모델과 일치해야 합니다. 예를 들어, 다음과 같이 사용자 정보를 입력받는 폼 클래스를 생성할 수 있습니다:
class UserForm(FlaskForm):
name = StringField('이름')
email = StringField('이메일')
submit = SubmitField('저장')
- 라우트 함수를 생성하고 폼 데이터를 처리합니다. POST 메서드로 폼이 제출된 경우 폼 데이터를 받아와 데이터베이스에 저장할 수 있습니다. 다음은 예시입니다:
@app.route('/', methods=['GET', 'POST'])
def index():
form = UserForm()
if form.validate_on_submit():
user = User(name=form.name.data, email=form.email.data)
db.session.add(user)
db.session.commit()
return render_template('index.html', form=form)
이제 폼 데이터를 입력하고 제출하면 해당 데이터가 데이터베이스에 저장됩니다.
플라스크(Flask)와 Flask-WTF, SQLAlchemy에 대한 자세한 내용은 아래 문서를 참조해주세요:
- Flask: Flask 공식 문서
- Flask-WTF: Flask-WTF 공식 문서
- SQLAlchemy: SQLAlchemy 공식 문서