[python] Flask-WTF에서 폼 검증을 어떻게 할 수 있을까요?
-
필요한 패키지를 설치합니다. Flask-WTF는 Flask와 함께 설치되어야 합니다.
pip install Flask-WTF
-
Flask 웹 애플리케이션에 폼을 만듭니다.
forms.py
와 같은 파일을 만들고 거기에 폼 클래스를 정의합니다. 이 폼 클래스는 WTForms의Form
클래스를 상속받아야 합니다. 필요한 필드와 폼 검증을 위한 유효성 검사기를 정의할 수 있습니다.from flask_wtf import FlaskForm from wtforms import StringField, PasswordField from wtforms.validators import DataRequired, Email class LoginForm(FlaskForm): email = StringField('Email', validators=[DataRequired(), Email()]) password = PasswordField('Password', validators=[DataRequired()])
-
Flask 애플리케이션에서 해당 폼을 사용하고 검증 결과를 처리합니다. 뷰 함수에서 폼 인스턴스를 생성하고
request.form
의 데이터를 폼에 바인딩합니다. 그런 다음validate_on_submit()
메서드를 사용하여 폼을 검증합니다. 이 메서드는 유효성 검사 및 CSRF(Cross-Site Request Forgery) 보호 검사를 수행합니다.from flask import Flask, render_template, request, redirect from forms import LoginForm app = Flask(__name__) app.config['SECRET_KEY'] = 'your-secret-key' @app.route('/login', methods=['GET', 'POST']) def login(): form = LoginForm() if form.validate_on_submit(): # 폼이 성공적으로 검증되었을 때 처리하는 로직 # 예: 데이터베이스에서 사용자 인증 return redirect('/dashboard') return render_template('login.html', form=form) if __name__ == '__main__': app.run()
validate_on_submit()
메서드는 GET 요청일 때는 False를 반환하므로, POST 요청일 때만 검증 로직이 실행되도록 합니다. -
HTML 템플릿에서 폼을 보여줍니다. Flask-WTF는 자동으로 폼 필드에 대한 HTML을 생성합니다. 이를 위해 템플릿에서
form
객체를 사용하고 필요한 필드를 렌더링합니다.<!-- login.html --> <form method="POST"> {{ form.csrf_token }} {{ form.email.label }} {{ form.email }} {{ form.password.label }} {{ form.password }} <button type="submit">로그인</button> </form>
이제 Flask-WTF를 사용하여 Flask 애플리케이션에서 쉽게 폼 검증을 수행할 수 있습니다. Flask-WTF의 자세한 내용은 공식 문서를 참조하시기 바랍니다.