Adding reCAPTCHA to a Flask site
Posted on Sat 20 June 2020 in dev-journal
This post will explain how to add Google reCAPTCHA to a Python Flask application using Flask-WTF.
The first thing you will need to do is get your SITE KEY
and your SECRET KEY
from Google reCAPTCHA
Make sure to create a reCAPTCHA version 2 site. Version 3 takes much more
configuration to get running.
Flask-WTF uses config variables name RECAPTCHA_PUBLIC_KEY
and RECAPTCHA_PRIVATE_KEY
- Add the following to your
config.py
RECAPTCHA_PUBLIC_KEY = "<Enter Site Key here>"
# make sure to load the private key from environment variables
RECAPTCHA_PRIVATE_KEY = os.environ.get('RECAPTCHA_PRIVATE_KEY')
- Add
RECAPTCHA_PRIVATE_KEY=<secret_key>
to a .flaskenv file or in the Environment Variables section of your conveyor site page
Add the RecaptchaField to the Flask-WTF form
from flask_wtf import FlaskForm, RecaptchaField
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired
class RegistrationForm(FlaskForm):
recaptcha = RecaptchaField()
email = StringField(('Email'), validators=[DataRequired(), Email()])
password = PasswordField(('Password'), validators=[DataRequired()])
submit = SubmitField(('Create Account'))
Add the following to the template file that uses the form:
{{ form.recaptcha }}