[python] Flask-WTF에서 사용자가 입력한 값을 저장하고 기록하는 방법은 어떻게 되나요?

Flask-WTF는 웹 애플리케이션의 사용자 인터페이스를 생성하기 위한 Flask 확장 프레임워크입니다. 사용자가 폼을 제출할 때 입력한 값을 저장하고 기록하는 방법은 다음과 같습니다:

  1. 폼 클래스 생성: 사용자 입력을 받기 위해 폼 클래스를 생성해야 합니다. Flask-WTF에서는 WTForms 라이브러리를 사용하여 쉽게 폼을 생성할 수 있습니다. 예를 들어, 사용자의 이름과 이메일 주소를 입력 받는 폼을 생성하려면 다음과 같이 코드를 작성할 수 있습니다:
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired

class UserForm(FlaskForm):
    name = StringField('Name', validators=[DataRequired()])
    email = StringField('Email', validators=[DataRequired()])
    submit = SubmitField('Submit')
  1. 라우트 생성: 사용자 입력을 처리하기 위해 해당 폼을 사용하는 라우트를 생성해야 합니다. 예를 들어, 사용자 입력을 저장하고 그 내용을 기록하는 라우트를 생성하려면 다음과 같이 코드를 작성할 수 있습니다:
from flask import Flask, render_template, request
from flask_wtf import FlaskForm

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'

@app.route('/', methods=['GET', 'POST'])
def home():
    form = UserForm()
    if form.validate_on_submit():
        name = form.name.data
        email = form.email.data
        
        # 입력한 값을 저장 또는 기록하는 로직을 추가합니다.
        # 예를 들어, 데이터베이스에 저장하거나 파일에 기록할 수 있습니다.
        
        return 'Data saved and logged successfully!'
    return render_template('index.html', form=form)

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

위의 예시 코드에서는 사용자가 제출한 폼을 폼 객체(form)로 받아옵니다. form.validate_on_submit()를 사용하여 사용자 입력이 유효한지 검사한 후, 유효한 경우에는 form.name.dataform.email.data를 사용하여 값을 추출합니다.

값을 저장하고 기록하는 로직은 주석에 표시된 부분에 추가하면 됩니다. 이 과정에서 데이터베이스에 저장하거나 파일에 기록하는 방식을 선택할 수 있습니다.

위의 코드에서 app.config['SECRET_KEY']는 애플리케이션의 보안에 사용되는 비밀 키를 설정합니다. 이 비밀 키는 암호화나 CSRF(Cross-Site Request Forgery) 공격 방어 등에 사용됩니다.

주의할 점은 이 코드는 간단한 예시로서 참고용으로 제공된 것이며, 실제 애플리케이션에서 사용할 때에는 보안 및 예외 처리 등을 고려해야 합니다. Flask-WTF 공식 문서에서 더 자세한 내용을 확인하시기 바랍니다.

참고 문서: