[python] Flask-WTF에서 폼 검증을 어떻게 할 수 있을까요?
  1. 필요한 패키지를 설치합니다. Flask-WTF는 Flask와 함께 설치되어야 합니다.

    pip install Flask-WTF
    
  2. 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()])
    
  3. 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 요청일 때만 검증 로직이 실행되도록 합니다.

  4. 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의 자세한 내용은 공식 문서를 참조하시기 바랍니다.