Flask-WTF를 사용하면 HTML 폼을 생성하기 위해 HTML 코드를 작성할 필요가 없습니다. 대신 파이썬 클래스로 폼을 정의하고 각 필드의 유효성 검사 규칙을 지정할 수 있습니다. 이 클래스를 사용하여 폼을 생성하고 렌더링하면 자동으로 적절한 HTML 코드가 생성됩니다.
Flask-WTF는 CSRF(Cross-Site Request Forgery) 공격을 방지하기 위한 기능도 제공합니다. CSRF 공격은 악의적인 웹사이트에서 사용자의 권한을 도용하여 다른 웹사이트에 요청을 보내는 공격입니다. Flask-WTF는 웹 폼에 CSRF 토큰을 추가하여 이러한 공격을 방어합니다.
Flask-WTF를 사용하기 위해 flask-wtf
패키지를 설치해야 합니다. 다음은 Flask-WTF를 사용하는 간단한 예제 코드입니다.
from flask import Flask, render_template
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your-secret-key'
class LoginForm(FlaskForm):
username = StringField('Username', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired()])
submit = SubmitField('Login')
@app.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
# 폼이 제출되었을 때 실행되는 코드
username = form.username.data
password = form.password.data
# 로그인 로직 수행
return f'Logged in as {username}'
return render_template('login.html', form=form)
if __name__ == '__main__':
app.run()
이 예제에서는 로그인 폼을 정의하기 위해 LoginForm
클래스를 사용하고, StringField
와 PasswordField
로 필드를 생성합니다. 각 필드에는 DataRequired
유효성 검사 규칙을 추가하여 사용자가 필드를 비워둘 수 없도록 합니다. SubmitField
는 폼을 제출하는 버튼을 생성합니다.
login
라우트 함수에서는 LoginForm
을 인스턴스화 하여 폼을 생성합니다. 폼이 제출되었을 때 validate_on_submit()
메서드를 사용하여 데이터의 유효성을 검사하고, 유효한 경우 로그인 로직을 수행합니다.
이 예제는 간단한 Flask-WTF의 사용 예시로, 더 복잡한 폼과 유효성 검사 규칙을 추가할 수 있습니다. Flask-WTF에 대한 자세한 사용법은 공식 문서를 참조하시기 바랍니다.