我已将django-recaptcha
集成到我的项目中,并将该字段添加到我的某个表单类型中。然后我将小部件放在页面上只需将小部件的HTML字符串传递给我的模板,如下所示:
dctResponse['recaptcha_html'] = form.fields['captcha_field'].widget.render('captcha', 'enter captcha')
这会在我的页面中添加以下内容:
<script type="text/javascript">
var DjangoRecaptchaOptions = {
"lang": "en"
};
if (typeof RecaptchaOptions !== 'object') {
RecaptchaOptions = DjangoRecaptchaOptions;
} else {
for (key in DjangoRecaptchaOptions) {
RecaptchaOptions[key] = DjangoRecaptchaOptions[key];
}
}
</script>
<script type="text/javascript" src="https://www.google.com/recaptcha/api/challenge?k=MY_PUBLIC_KEY&hl=en"></script>
<noscript>
<iframe src="https://www.google.com/recaptcha/api/noscript?k=MY_PUBLIC_KEY&hl=en" height="300" width="500" frameborder="0"></iframe><br />
<textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
<input type='hidden' name='recaptcha_response_field' value='manual_challenge' />
</noscript>
当我检查呈现页面的HTML源代码时,该代码是可见的,但浏览器中没有显示任何内容。在查看Javascript控制台输出时,我收到以下错误消息:
GET https://www.google.com/recaptcha/api/challenge?k=MY_PUBLIC_KEY&hl=en 500 (Internal Server Error)
奇怪的是,当我在浏览器中输入上述地址时,我收到以下回复:
var RecaptchaState = {
site : 'PUBLIC_KEY',
rtl : false,
challenge : 'CHALLENGE_STRING',
is_incorrect : false,
programming_error : '',
error_message : '',
server : 'https://www.google.com/recaptcha/api/',
lang : 'en',
timeout : 1800
};
document.write('<scr'+'ipt type="text/javascript" s'+'rc="' + RecaptchaState.server + 'js/recaptcha.js"></scr'+'ipt>');
在我的页面上从JS调用时,停止请求的工作可能会发生什么?它可能与另一个脚本发生冲突吗?此外,这是通过SSL运行的方式:我正在使用它的页面通过SSL提供,RECAPTCHA_USE_SSL
变量设置为True
。