[python] Flask-WTF에서 입력 폼의 템플릿을 커스터마이징하는 방법은 어떻게 되나요?
Flask-WTF는 Flask 프레임워크에서 폼을 구현하고 처리하는 데 사용되는 강력한 라이브러리입니다. Flask-WTF를 사용하면 간단하게 사용자 입력을 처리하는 폼을 만들 수 있습니다. 이 때, 입력 폼의 템플릿을 커스터마이징하여 원하는대로 디자인할 수 있습니다.
Flask-WTF에서 입력 폼의 템플릿을 커스터마이징하는 방법은 다음과 같습니다:
- Flask-WTF를 설치합니다. 다음 명령어를 사용하여 설치할 수 있습니다:
pip install Flask-WTF
- Flask-WTF의 Form 클래스를 상속하여 커스텀 폼 클래스를 생성합니다. 이 클래스는 입력 폼의 필드와 유효성 검사 로직을 정의합니다. 예를 들어, 다음과 같이 커스텀 폼 클래스를 생성할 수 있습니다:
from flask_wtf import FlaskForm from wtforms import StringField, SubmitField from wtforms.validators import DataRequired class MyForm(FlaskForm): name = StringField('Name', validators=[DataRequired()]) email = StringField('Email', validators=[DataRequired()]) submit = SubmitField('Submit')
- 커스텀 폼 클래스를 사용하여 뷰 함수에서 폼 인스턴스를 생성합니다. 이 때, 커스텀 폼 클래스의 인스턴스를 생성하면 입력 폼의 템플릿이 렌더링됩니다. 예를 들어, 다음과 같이 폼 인스턴스를 생성할 수 있습니다:
from flask import Flask, render_template, redirect, url_for from myforms import MyForm app = Flask(__name__) app.config['SECRET_KEY'] = 'your-secret-key' @app.route('/', methods=['GET', 'POST']) def index(): form = MyForm() if form.validate_on_submit(): # 폼이 제출되었을 때 실행할 코드 return redirect(url_for('success')) return render_template('index.html', form=form) @app.route('/success') def success(): return 'Form submitted successfully!' if __name__ == '__main__': app.run()
- 템플릿 파일을 생성하고 커스터마이징합니다. Flask-WTF는 Jinja2 템플릿 엔진을 사용하므로, Jinja2의 문법을 사용하여 템플릿 파일을 작성할 수 있습니다. 예를 들어, 다음과 같이
index.html
파일을 작성할 수 있습니다:<form method="POST" action="{{ url_for('index') }}"> {{ form.csrf_token }} {{ form.name.label }} {{ form.name }}<br> {{ form.email.label }} {{ form.email }}<br> {{ form.submit }}<br> </form>
위와 같이 커스텀 폼 클래스를 작성하고, 뷰 함수에서 폼 인스턴스를 생성하여 템플릿 파일에 렌더링하면 Flask-WTF에서 입력 폼의 템플릿을 커스터마이징할 수 있습니다. 이를 통해 원하는대로 입력 폼의 디자인을 변경하거나 추가적인 요구사항을 구현할 수 있습니다.
더 자세한 내용은 Flask-WTF 공식 문서를 참고하시기 바랍니다.