[python] Flask-WTF에서 폼을 전송할 때 추가적인 데이터를 함께 전달하는 방법은 어떻게 되나요?
우선, Flask-WTF의 FormField
를 사용하여 특정 폼을 생성하고 화면에 표시할 수 있습니다. 그리고 이 전체 폼을 다른 폼에 포함시키고 싶은 경우에는 hidden field
를 이용하여 추가적인 데이터를 전달할 수 있습니다. 이 숨겨진 필드는 클라이언트에게 표시되지 않지만 서버에 전송됩니다.
아래는 Flask-WTF를 사용하여 폼을 생성하고 추가적인 데이터를 함께 전달하는 예제입니다.
from flask import Flask, render_template_string
from flask_wtf import FlaskForm, FormField
from wtforms import StringField, SubmitField
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
class SubForm(FlaskForm):
data = StringField('Data')
submit = SubmitField('Submit')
class MainForm(FlaskForm):
sub_form = FormField(SubForm)
additional_data = StringField('Additional Data')
submit = SubmitField('Submit')
@app.route('/', methods=['GET', 'POST'])
def index():
form = MainForm()
if form.validate_on_submit():
# 폼이 제출되었을 때 추가적인 데이터 가져오기
additional_data = form.additional_data.data
sub_form_data = form.sub_form.data['data']
# 추가 작업 수행
# ...
return 'Form submitted successfully.'
return render_template_string("""
<form method="POST">
{{ form.csrf_token }}
{{ form.sub_form.hidden_tag() }}
{{ form.additional_data.label }} {{ form.additional_data() }}
{{ form.sub_form.data.label }} {{ form.sub_form.data() }}
{{ form.submit() }}
</form>
""", form=form)
if __name__ == '__main__':
app.run()
이 예제에서는 SubForm
과 MainForm
두 개의 폼을 정의합니다. MainForm
에는 additional_data
필드와 sub_form
필드가 있습니다. sub_form
필드는 SubForm
폼을 포함하고 있으며, FlaskForm
을 상속하는 모든 폼 객체를 포함할 수 있습니다.
index
뷰 함수에서는 MainForm
을 생성하고, 폼이 제출되면 추가적인 데이터와 sub_form
폼의 데이터를 가져와서 사용할 수 있습니다.
템플릿에서 폼을 표시할 때 숨겨진 필드를 포함시키기 위해 sub_form.hidden_tag()
를 사용합니다.
이 예제를 실행하면 /
경로에서 폼을 보여주고, 추가적인 데이터와 함께 폼을 제출할 수 있습니다.
이런 식으로 Flask-WTF를 사용하여 폼을 제출할 때 추가적인 데이터를 전달할 수 있습니다. 이 기능을 사용하면 사용자 정의 필드를 통해 현재 사용자 또는 세션 정보와 같은 추가 데이터를 전달할 수 있습니다.