今天刚学习了调用recaptcha 来验证是人类还是机器人的方法,
在Forms.py里面import 引用了 recaptcha, 并添加了recaptcha验证
from flask_wtf import FlaskForm, RecaptchaField
#下面RegisterForm继承的就是上面import 引入的是FlaskForm类
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, Length, EqualTo, Email
#但是验证的任务交给 wtforms,要提一下的是,Email验证报错的话,是pip install wtforms版本太高,
#解决方法有两个
# 第一个方法 :安装低版本,百度一下哪一个合适.
# 第二个方法 : 单独 pip install email-validator, 也就是另安装 email-validator
class RegisterForm(FlaskForm):
#验证网页端post提交过来的Username, Password, Reapeat Password, Email, 也就是用户名,密码,二次密码,邮箱,最后还有验证提交注册
username = StringField('Username', validators=[DataRequired(), Length(min=6, max=20)])
password = PasswordField('Password', validators=[DataRequired(), Length(min=6, max=30)])
confirm = PasswordField('Repeat Password', validators=[DataRequired(), EqualTo('password')])
email = StringField('Email', validators=[DataRequired(), Email()])
recaptcha = RecaptchaField() #recaptcha验证
submit = SubmitField('注册')
还需要去conifg.py里面添加 RECAPTCHA_PUBLIC_KEY 密钥
import os
basedir = os.path.abspath(os.path.dirname(__file__))
class Config(object):
#SECRET_KEY
SECRET_KEY = os.environ.get('SECRET_KEY')# or 'asdf865zx3' or前面的是需要在windows系统环境添加一条SECRET_KEY或者直接写明文密码
#RECAPTCHA_PUBLIC_KEY
RECAPTCHA_PUBLIC_KEY = os.environ.get('RECAPTCHA_PUBLIC_KEY') #or前面的是需要在windows系统环境添加或者直接写明文密码
# SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir,'app.db')
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(os.environ.get('DATABASE_URL'), 'app.db')
# SQLALCHEMY_DATABASE_URI = 'sqlite:///D:\\db\\app.db'
SQLALCHEMY_TRACK_MODIFICATIONS = False
我这里引用的是windows系统环境里面密钥, 这个密钥不是随便填一个,而是要去google申请, google会给你这个随机的密钥
申请如下:
先去google recaptcha https://www.google.com/recaptcha/admin#list
点新增+, 标签名随便填, 方便识别这里我填127.0.0.1,选v2, 再选第一个
下面的域名填127.0.0.1, 也可以填localhost, 这里我填的127.0.0.1
确定就好了, google会给你两个密钥, RECAPTCHA_PUBLIC_KEY = '填写google给你的网站密钥', 引号别忘记了.
我用的是windows系统环境来配置的, 所以直接写 RECAPTCHA_PUBLIC_KEY = os.environ.get('RECAPTCHA_PUBLIC_KEY')
前提是系统环境要先添加进这个密钥, 并且要重启电脑 , 像下面这样
再次运行flask, 就能正常验证了.
还要提一点, 你要确保你的网络是可以访问google的, 在这个前提下才能使用.