[python] Flask-WTF에서 사용자가 입력한 값을 캡차로 검증하는 방법은 어떻게 되나요?
  1. 먼저 Flask-WTF를 설치해야 합니다. pip install flask-wtf 명령어를 사용하여 설치할 수 있습니다.

  2. Flask-WTF를 사용하여 폼을 만듭니다. 예를 들어, 다음과 같이 폼을 생성합니다.

from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField, HiddenField
from wtforms.validators import InputRequired

class CaptchaForm(FlaskForm):
    captcha = HiddenField('Captcha', validators=[InputRequired()]) # HiddenField를 사용하여 캡차 값을 전달받습니다.
    answer = StringField('Answer', validators=[InputRequired()]) # 사용자가 입력한 값을 검증하기 위한 필드입니다.
    submit = SubmitField('Submit')
  1. 캡차 값을 템플릿에 전달합니다. 예를 들어, 다음과 같이 템플릿에서 캡차 값을 전달받습니다.
from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def index():
    form = CaptchaForm()
    form.captcha.data = generate_captcha() # 캡차 값을 생성하고 HiddenField에 전달합니다.
    return render_template('index.html', form=form)
  1. 템플릿에서 사용자가 입력한 값을 검증합니다. 예를 들어, 다음과 같이 템플릿에서 사용자가 입력한 값을 검증합니다.

<form method="POST" action="{{ url_for('submit') }}">
  {{ form.hidden_tag() }}
  {{ form.answer.label }} {{ form.answer }}
  <input type="submit" value="Submit">
</form>

  1. 서버에서 사용자가 입력한 값을 캡차 값과 비교하여 검증합니다. 예를 들어, 다음과 같이 서버에서 값을 비교하고 검증 결과를 반환합니다.
from flask import request, jsonify

@app.route('/submit', methods=['POST'])
def submit():
    form = CaptchaForm()
    if form.validate_on_submit():
        if form.captcha.data == form.answer.data: # 사용자가 입력한 값과 캡차 값을 비교하여 검증합니다.
            return jsonify({'success': True, 'message': 'Captcha verification passed.'})
        else:
            return jsonify({'success': False, 'message': 'Captcha verification failed.'})
    else:
        return jsonify({'success': False, 'message': 'Form validation failed.'})

이제 Flask-WTF를 사용하여 사용자가 입력한 값을 캡차로 검증하는 방법에 대해 알아보았습니다. 위의 예제를 참고하여 적절하게 적용해보세요.