让烧瓶重新开始工作我遇到了很多麻烦。我基本上遵循这里的教程(https://github.com/mardix/flask-recaptcha),但它不起作用。这是我的设置。
在__iniy__.py
我做
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from flask_mail import Message, Mail
from flask.ext.elasticsearch import FlaskElasticsearch
from flask_recaptcha import ReCaptcha
app = Flask(__name__)
app.config.from_pyfile('../config.py')
db = SQLAlchemy(app)
mail = Mail(app)
es = FlaskElasticsearch(app)
recaptcha = ReCaptcha(app=app)
from app import views
现在我将recaptcha导入views.py并设置一些配置参数
from app import db, app, models, mail, es, recaptcha
app.config.update({
'RECAPTCHA_ENABLED': True,
'RECAPTCHA_SITE_KEY': "public",
'RECAPTCHA_SECRET_KEY': "private"
})
并在register.html中包含{{ recaptcha }}
。当表格进来时我会检查
recaptcha.verify()
但总是给予True。 recaptcha甚至没有在页面上显示? 我在google recaptcha下注册了我的域名,并使用该站点提供的公钥和私钥。 我可以使用Google recaptcha网站提供的代码段,而不是使用flask-recaptcha包,这似乎工作正常。 我宁愿使用标准包? 还有recaptcha.verify()如何区分未验证和未提交(意味着没有点击)? 任何帮助表示赞赏
进展:好的我发现recaptcha在我的网站上显示正确,而在localhost下它根本没有显示...我想这是因为localhost没有在google recaptcha下注册...但是非常令人困惑。相反,人们可能会显示一条消息,指出此域名未注册...但无论如何,我仍然得到
recapcha.verify() = True
即使我在提交前没有点击recaptcha?我必须验证recaptcha是否已提交?
答案 0 :(得分:2)
以防有人遇到类似问题 - 只需切换配置参数定义即可解决我的问题。初始化recaptcha后设置配置参数似乎不起作用。不知道为什么。这是我的设置,工作正常:
我不再在__init__.py
中执行任何操作,而在views.py
我有以下代码:
from flask_recaptcha import ReCaptcha
app.config.update(dict(
RECAPTCHA_ENABLED = True,
RECAPTCHA_SITE_KEY = "public",
RECAPTCHA_SECRET_KEY = "private",
))
recaptcha = ReCaptcha()
recaptcha.init_app(app)
就是这样。