[python] Flask-WTF에서 사용자가 입력한 값을 캡차로 검증하는 방법은 어떻게 되나요?
-
먼저 Flask-WTF를 설치해야 합니다.
pip install flask-wtf
명령어를 사용하여 설치할 수 있습니다. -
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')
- 캡차 값을 템플릿에 전달합니다. 예를 들어, 다음과 같이 템플릿에서 캡차 값을 전달받습니다.
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)
- 템플릿에서 사용자가 입력한 값을 검증합니다. 예를 들어, 다음과 같이 템플릿에서 사용자가 입력한 값을 검증합니다.
<form method="POST" action="{{ url_for('submit') }}">
{{ form.hidden_tag() }}
{{ form.answer.label }} {{ form.answer }}
<input type="submit" value="Submit">
</form>
- 서버에서 사용자가 입력한 값을 캡차 값과 비교하여 검증합니다. 예를 들어, 다음과 같이 서버에서 값을 비교하고 검증 결과를 반환합니다.
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를 사용하여 사용자가 입력한 값을 캡차로 검증하는 방법에 대해 알아보았습니다. 위의 예제를 참고하여 적절하게 적용해보세요.