解决Flask-wtf 里面recaptcha的问题

今天刚学习了调用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, 再选第一个

解决Flask-wtf 里面recaptcha的问题

下面的域名填127.0.0.1, 也可以填localhost, 这里我填的127.0.0.1

解决Flask-wtf 里面recaptcha的问题

确定就好了, google会给你两个密钥,  RECAPTCHA_PUBLIC_KEY = '填写google给你的网站密钥',    引号别忘记了.

我用的是windows系统环境来配置的, 所以直接写       RECAPTCHA_PUBLIC_KEY = os.environ.get('RECAPTCHA_PUBLIC_KEY')

前提是系统环境要先添加进这个密钥, 并且要重启电脑 , 像下面这样

解决Flask-wtf 里面recaptcha的问题

 再次运行flask, 就能正常验证了.

解决Flask-wtf 里面recaptcha的问题

还要提一点, 你要确保你的网络是可以访问google的, 在这个前提下才能使用.

上一篇:Python隐藏特性:字符串驻留、常量折叠


下一篇:WTF Python课堂(2)